Yaffil 889

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
Sergey_
Сообщения: 1
Зарегистрирован: 15 авг 2005, 07:28

Yaffil 889

Сообщение Sergey_ » 21 ноя 2005, 15:31

Пишу процедуру в IBexperte...с синусами и косинусами
...в определённый момент при добавлении простой пустой строки выдаётся сообщение


This operation is not defined for system tables.
Dynamic SQL Error.
SQL error code = -607.
Function unknown.

сама процедура...описание действий приводомых к ошибке почти в самом конце

Код: Выделить всё

CREATE PROCEDURE RASH_PROF1(
    KOD_PROEKT_DANN INTEGER)
RETURNS (
    Y_RASH DOUBLE PRECISION,
    X_RASH DOUBLE PRECISION,
    Z_RASH DOUBLE PRECISION,
    DEPT DOUBLE PRECISION,
    UGOL DOUBLE PRECISION,
    AZIM DOUBLE PRECISION)
AS
declare p_azim_i DOUBLE PRECISION;
declare sm_kr_kor DOUBLE PRECISION;
declare I_AZ_GOR DOUBLE PRECISION;
declare SM_PRED_KOR DOUBLE PRECISION;
declare GLUB_KR_V DOUBLE PRECISION;
declare GLUB_POD_V DOUBLE PRECISION;
declare h double precision;
declare alfa1 double precision;
declare alfa_sr double precision;
declare ug1 double precision;
declare ug2 double precision;
declare L1 double precision;
declare L2 double precision;
declare L3 double precision;
declare R1 double precision;
declare R3 double precision;
declare x1 double precision;
declare Shag_glub double precision;
declare I double precision;
declare Al_tek double precision;
declare Al_pred double precision;
declare x_pred double precision;
declare z_pred double precision;
declare dept_tek double precision;
declare dept_pred double precision;
declare sm_int double precision;
begin
    select
        proekt_dann.p_azim_i, proekt_dann.sm_kr_kor,I_AZ_GOR ,SM_PRED_KOR,GLUB_KR_V ,GLUB_POD_V  from proekt_dann
        into :p_azim_i , :sm_kr_kor , :i_az_gor , :sm_pred_kor , :glub_kr_v , :GLUB_POD_V;
        h= abs(:glub_pod_v- :glub_kr_v);
        alfa1= round( acos((:h/SM_PRED_KOR) )*(180 / Pi()),8);
        alfa_sr= round(:alfa1/2,8);
        if (:p_azim_i > 180) then
            ug1= 360-:p_azim_i;
            else
            ug1= :p_azim_i;
        if (:i_az_gor > 180) then
            ug2= 360-:i_az_gor;
            else
            ug2= :i_az_gor;
            delete from profil_rash where profil_rash.kod_proekt_dann= :kod_proekt_dann;
        shag_glub =10;
        I=3;
        L1=100.00/(:I*:shag_glub)*:alfa_sr;
        L3=100.00/(:I*:shag_glub)*:alfa_sr;
        R1=573/I;
        R3=573/I;
        x1=-:shag_glub;
        al_tek= -:I;
        al_pred=0;
        y_rash=0;
        x_rash=0;
        z_rash=0;
        x_pred=0;
        z_pred=0;
        dept_tek=0;
        dept_pred=0;
        while (:x1<=:L1) do
            begin
                x1= :x1+:shag_glub;
                al_tek= :al_tek+:i;
                y_rash= R1*sin(:al_tek *Pi()/180);
                dept_tek= :y_rash;
                x_rash= :x_pred+(:dept_tek-:dept_pred)*sin((((:al_tek+:al_pred)*Pi()/180)/2))*cos( (:ug1)*Pi()/180);
                z_rash= :z_pred+(:dept_tek-:dept_pred)*sin((((:al_tek+:al_pred)*Pi()/180)/2))*sin( (:ug1)*Pi()/180);
                x_pred= :x_rash;
                z_pred= :z_rash;
                dept_pred = :dept_tek;
                al_pred= :al_tek;
                dept= :y_rash;
                ugol= :al_tek;
                azim= :ug1;
            insert into profil_rash (NPP,DEPT, UGOL,AI,AM,UDL,SM,ASI,XK,YK,ZK,INTERVAL,OXK,OYK,OZK,KOD_PROEKT_DANN,X_RASH,
                Y_RASH,Z_RASH,ABS_RASH,INTENS,KRUG_S_U,KRUG_V_Z) values (gen_id(g_profil_rash,1), :Y_RASH, :al_tek, :ug1,
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, :KOD_PROEKT_DANN, :X_RASH, :Y_RASH, :Z_RASH,0, 0, 0, 0);

                suspend;
            end
            x1= :x1-:shag_glub;
            L2= :glub_kr_v-(:y_rash+:y_rash);
            while (:x1<= :L2) do
                begin
                     x1= :x1+:shag_glub;
                     y_rash= :x1*cos(:al_tek*Pi()/180);
                     dept_tek= :y_rash;
                     sm_int= :y_rash*tan(:al_tek *Pi()/180);
                     x_rash= :x_pred+(:dept_tek-:dept_pred)*sin((((:al_tek+:al_pred)*Pi()/180)/2))*cos( (:ug1)*Pi()/180);
                     z_rash= :z_pred+(:dept_tek-:dept_pred)*sin((((:al_tek+:al_pred)*Pi()/180)/2))*sin( (:ug1)*Pi()/180);
                     x_pred= :x_rash;
                     z_pred= :z_rash;
                     dept_pred = :dept_tek;
                     al_pred= :al_tek;
                     dept= :y_rash;
                     ugol= :al_tek;
                     azim= :ug1;

insert into profil_rash (NPP,DEPT, UGOL,AI,AM,UDL,SM,ASI,XK,YK,ZK,INTERVAL,OXK,
OYK,OZK,KOD_PROEKT_DANN,X_RASH,Y_RASH,Z_RASH,ABS_RASH,INTENS,KRUG_S_U,KRUG_V_Z)
values (gen_id(g_profil_rash,1), :Y_RASH, :al_tek, :ug1,0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, :KOD_PROEKT_DANN, :X_RASH, :Y_RASH, :Z_RASH,0, 0, 0, 0);

suspend;
                end
           x1= :x1-:shag_glub;
           while (:x1<= :glub_kr_v) do
                begin
x1= :x1+:shag_glub;  <-----------------------------
suspend;                    <-----------------------------
                end
end
...ОПИСАНИЕ ОШИБКИ
если вставить пустую строку между стрелок...

x1= :x1+:shag_glub;

suspend;

...выдаётся сообщение о незнании некой фунции...
This operation is not defined for system tables.
Dynamic SQL Error.
SQL error code = -607.
Function unknown.

Ответить