ошибка Multiple Rows In Singleton Select

Тема в разделе "Delphi - Базы данных", создана пользователем nosebleed, 4 окт 2006.

Статус темы:
Закрыта.
  1. nosebleed

    nosebleed Гость

    Собственно, процедура
    Код (Text):
    CREATE PROCEDURE INSTR_V_PRVE (
    data date)
    returns (
    v_prve_instr_tseh integer,
    percentage_end numeric(15,3),
    code integer,
    v_klad_instr_tseh integer,
    percentage_begin numeric(15,3),
    data_expire date,
    name char(30),
    kol_vo_used integer,
    sdano_do_nachala integer,
    vziato_do_nachala integer,
    max_data date,
    last_data date,
    d integer,
    ostatok integer,
    kol numeric(15,3),
    normal char(30),
    description char(30),
    smena_expire integer,
    vsego integer)
    as
    declare variable smena integer;
    declare variable st_from_temp decimal(15,3); /* нар стойкость(используется для used instr) */
    declare variable st decimal(15,3);
    declare variable resurs decimal(15,3);
    declare variable is_resurs integer;
    declare variable narabotka decimal(15,3);
    declare variable kod integer;
    begin
    smena=3;
    for
    /* получим данные о нар стойкости, необх. кол-ве, описание */
    select name,normal,t_code,t_st,st,description,resurs, is_resurs,last_data
    from temp where t_code not in
    (select code from data_vidachi where data=:data)
    into :name,:normal,:kod,:st_from_temp,:st, :description,:resurs,:is_resurs,:last_data


    do

    begin
    v_klad_instr_tseh=0;
    v_prve_instr_tseh=0;
    /* получим данные об инструменте: имя, нормаль, стойкость, диаметр */

    select kol_vo from kladovaya where kl_code=:kod into :vsego;

    /* подсчитаем дату замены инструмента, его наработанную стойкость на начало и конец месяца  */
    if (exists (select used_code from use_instr where used_code=:kod)) then
    /**/ begin
    /* дата и количество с прошлого месяца*/
    select nar_st+:st_from_temp,kol_vo,100*nar_st/(kol_vo*:st) from use_instr where used_code=:kod into :narabotka, :kol_vo_used,:percentage_begin;
    select data_exp,smena_exp from date_expire(:data,:smena,:resurs,:narabotka, :kod) into :data_expire,:smena_expire;

    /* посчитаем количество в пр-ве, дату последней выдачи и дату посл. использования */
    select sum(kol) from data_vidachi where code=:kod and data<=:data into :vziato_do_nachala;
    if (vziato_do_nachala is null) then vziato_do_nachala=0;
    select sum(kol) from data_sdachi where code=:kod and data<=:data into :sdano_do_nachala;
    if (sdano_do_nachala is null) then sdano_do_nachala=0;
    kol=vziato_do_nachala-sdano_do_nachala;
    if (vziato_do_nachala=0 and sdano_do_nachala=0) then
    kol=kol_vo_used;
    /* проценты */
    percentage_begin=cast(percentage_begin as integer);
    if (is_resurs=1) then
    begin
    select 100*(:st_from_temp+nar_st)/(:st*kol_vo) from use_instr where used_code=:kod into :percentage_end;
    percentage_end=cast(percentage_end as integer);
    end
    else
    begin
    percentage_end=cast(st_from_temp/st*100 as integer);
    end



    /**/ end     /* выше считали для used_instr , ниже считаем для нового инстр */

    else
    begin
    /* дата */
    select data_exp,smena_exp from date_expire(:data,:smena,:st,:st_from_temp, :kod) into :data_expire,:smena_expire;
    /* проценты */
    percentage_end=cast(st_from_temp/st*100 as integer);
    percentage_begin=0;
    kol_vo_used=0;
    /* посчитаем количество в пр-ве, дату последней выдачи и дату посл. использования */
    select sum(kol) from data_vidachi where code=:kod and data<=:data into :vziato_do_nachala;
    if (vziato_do_nachala is null) then vziato_do_nachala=0;
    select sum(kol) from data_sdachi where code=:kod and data<=:data into :sdano_do_nachala;
    if (sdano_do_nachala is null) then sdano_do_nachala=0;
    kol=vziato_do_nachala-sdano_do_nachala;


    end

    select max(data) from data_vidachi where code=:kod into :max_data;
    if (max_data is null) then
    select data_spis from use_instr where used_code=:kod into :max_data;
    ostatok=vsego-vziato_do_nachala;
    SELECT kol from kladovaya_instr_tseh where code=:kod into v_klad_instr_tseh;
    SELECT kol from instr_tseh_prvo where code=:kod into v_prve_instr_tseh;
    suspend;
    end

    end
    В IBExpert все работает. Работает и в Delphi 7 , НО , когда пролистываю DBGrid до конца получаю вышеуказанную ошибку. Причем в стадии разработки могу пролистать до конца и никаких проблем.

    Установлен компонент EHlib, не знаю может ли это как-то влиять.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей