Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Вниз

И снова Firebird, dialect 3 - не хочет создавать функцию   Найти похожие ветки 

 
XM-AD   (2002-12-05 15:57) [0]

Вобщем на 5.5 работала функция, которая по наступлению некоторого события начинала делать Insert-ы и Update-ы. Так вот при вписании этой функции в скрипт создания базы получается такая фишка:
//* $$ ******** ERROR *************
//FAILED - The insert, update, delete, ddl or authorization statement cannot
// be executed because the transaction is inquiry only.
//SQL error code = -817.
//Metadata update statement is not allowed by the current database SQL dialect 3.
//


Причем в других функциях Insert-ы с Update-ами съедает нормально... :(
Что это такое и как с ним бороться?


 
Digitman   (2002-12-05 16:47) [1]

приведи соотв.фрагмент скрипта


 
XM-AD   (2002-12-05 17:17) [2]

CREATE PROCEDURE REG_ACTION AS BEGIN EXIT; END ^

ALTER PROCEDURE REG_ACTION (BARCODE VARCHAR(10) CHARACTER SET WIN1251, DIRECTION CHAR(1) CHARACTER SET WIN1251,ACTIONTIME DATE)
AS
declare variable PERSON_POSITION CHAR(1);
declare variable BAD_DIR INTEGER;
declare variable EXPIRY_DATE TIMESTAMP;
declare variable PASS_TYPE CHAR(1);
declare variable LAST_COME TIMESTAMP;
declare variable LAST_DATE TIMESTAMP;
declare variable ACTION_DATE TIMESTAMP;
declare variable TIME_IN TIMESTAMP;
declare variable TIME_OUT TIMESTAMP;
declare variable DOSAVE INTEGER;
declare variable REFRESHMODE INTEGER;
begin
select Person_Position, Expiry_Date, Pass_Type, Last_Come
from Pass
where Barcode=:Barcode
into :Person_Position, :Expiry_Date, :Pass_Type, :Last_Come;

if (Last_Come is Null) then Last_Come=Cast("1.1.2000" as date);
Last_Date=f_StripTime(Last_Come);
Action_Date=f_StripTime(ActionTime);

if ((Person_Position=Direction) or (Last_Date<>Action_Date))then
Bad_Dir=1;
else
Bad_Dir=0;

insert into PassLog (Barcode, Direction, Action_Time, Bad)
values (:Barcode, :Direction, :ActionTime, :Bad_Dir);

Time_IN=null;
Time_Out=Null;
dosave=0;
Bad_Dir=1;
if (Direction="O") then
begin
dosave=1;
Time_Out=ActionTime;
if (Person_Position="I") then
begin
if (Last_Date=Action_Date) then
begin
Time_IN=Last_Come;
Bad_Dir=0;
end
else
begin
Time_IN=Last_Come;
insert into passlogex(Barcode, Time_IN, Action_Date, Bad)
values (:Barcode, :Time_IN, :Last_Date, :Bad_Dir);
Last_Date=Action_Date;
Time_In=Null;
end
end
end
else
begin
if (Person_Position="I") then
begin
dosave=1;
Time_IN=Last_Come;
end
end

if (dosave=1) then
insert into passlogex(Barcode, Time_IN, Time_Out, Action_Date, Bad)
values (:Barcode, :Time_IN, :Time_Out, :Last_Date, :Bad_Dir);

if ((Pass_Type="D") and (Expiry_Date is null)) then
update Pass
set
Person_Position=:Direction,
Last_Come=:ActionTime,
Expiry_Date="today"
where Barcode=:Barcode;
else
update Pass
set
Person_Position=:Direction,
Last_Come=:ActionTime
where Barcode=:Barcode;
RefreshMode=Gen_ID(gen_refresh_mode,-RefreshMode);
when any do
RefreshMode=Gen_ID(gen_refresh_mode,-RefreshMode);

END ^


 
Digitman   (2002-12-05 17:53) [3]

почему бы не сделать сразу

CREATE PROCEDURE REG_ACTION (BARCODE VARCHAR(10) CHARACTER SET WIN1251, DIRECTION CHAR(1) CHARACTER SET WIN1251,ACTIONTIME DATE)
AS ... и т.д.

Могу ошибаться, но ,как помнится, IB5.x не допускала таких "выкрутасов", когда процедура создается/модифицируется с различным рабором параметров


 
FreeLancer   (2002-12-05 18:00) [4]

1. Переменные в объявлении и в теле должны выглядеть одинаково
DIRECTION - DIRECTION а не Direction
2. ACTIONTIME DATE типа DATE нет в Dialect 3
3. Ругается на что-то еще :-)


 
FreeLancer   (2002-12-05 18:03) [5]

http://www.ibase.ru/migration.htm


 
Smashich   (2002-12-05 20:32) [6]

То FreeLanser:

куда интересно подевался тип date из dialect 3?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-85951
Виталий
2002-12-15 14:14
2002.12.26
Компонент для работы с XML


1-85899
MadGhost
2002-12-15 10:58
2002.12.26
Как писать в ДОС-программу и как читать от туда?


3-85865
Larisa
2002-12-08 20:03
2002.12.26
Подскажите пожалуйста, как сделать Back up из приложения.


3-85788
werr
2002-12-05 17:59
2002.12.26
Поиск неотсортированных записей


1-85978
Seldon
2002-12-15 23:46
2002.12.26
Как сохранить ветку реестра?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский