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

Вниз

Create Procedure   Найти похожие ветки 

 
BlackKing   (2003-12-01 11:43) [0]

Подскажите пожалуйста, что сдесь не так? почему ругается на: Column unknown. IDMAT.

CREATE PROCEDURE SetMatDaudz(IdMat INT)
AS
Declare variable Sum1 Double precision;
Declare variable Sum2 Double precision;
BEGIN
Select Sum(SSar_Daudz) From Sp_Sar Where Sp_Sar.Id_Mat =IdMat INTO SUM1;
IF (SUM1 IS NULL) THEN SUM1=0;
Select Sum(SVSar_Daudz) From SVp_Sar Where SVp_Sar.Id_Mat =IdMat INTO SUM2;
IF (SUM2 IS NULL) THEN SUM2=0;
Update Material Set Mat_Daudz = SUM1+SUM2 Where Material.Id_Mat =IdMat;
END;


 
Val   (2003-12-01 11:49) [1]

:IdMat - поскольку - параметр


 
BlackKing   (2003-12-01 11:56) [2]

hmmm..в хелпе по IB нигде в примерах нет ":"
да и сам генератор в IBExpert без ":" делает.

к тому же ругается на первую строку.
если напишу
CREATE PROCEDURE SetMatDaudz(:IdMat INTEGER)
кричит : не знаю что такое ":".


 
BlackKing   (2003-12-01 11:58) [3]

Всё, разобрался.
Senks".


 
Val   (2003-12-01 12:01) [4]

>BlackKing (01.12.03 11:56) [2]
"...мать тихо ответило эхо..." :)
читаем доку по ИБ, про процедуры читаем, убираем двоеточие из определения параметра и вставляем при использовании его внутри процедуры.


 
BlackKing   (2003-12-01 12:26) [5]

CREATE PROCEDURE SETMATDAUDZ (IDMAT INTEGER)
AS
DECLARE VARIABLE SUM2 DOUBLE PRECISION;
DECLARE VARIABLE SUM1 DOUBLE PRECISION;
begin
Select Sum(SSar_Daudz) From Sp_Sar Where Sp_Sar.Id_Mat =:IdMat INTO :SUM1;
IF (:SUM1 IS NULL) THEN SUM1=0;
Select Sum(SVSar_Daudz) From SVp_Sar Where SVp_Sar.Id_Mat =:IdMat INTO :SUM2;
IF (:SUM2 IS NULL) THEN SUM2=0;
Update Material Set Mat_Daudz = :SUM1+:SUM2 Where Material.Id_Mat =:IdMat;
end

IBExpert такое принял, создал процедуру, но когда я пытаюсь создать её через TQuery.ExecSQL - ругается. Почему? там другой синткс или надо процедуру создавать поэтапно?

ругается на ету строку:
Select Sum(SSar_Daudz) From Sp_Sar Where Sp_Sar.Id_Mat =:IdMat INTO :SUM1;


 
Val   (2003-12-01 12:34) [6]

скажите, а какова необходимость выполнять данный ддл-скрипт с клиента?


 
BlackKing   (2003-12-01 12:43) [7]

смысл таков: прога установлена в другом городе, я же не поеду к клиенту, чтобы в его базу добавить ету процедуру. я просто пошлю ЕХЕ-файлик и он всё сделает.
Ну ето тока пример.
Ещё делаю програмку, которая автоматически будет синхронизировать структуру базы клиента с моей (я послал ему структуру моей, а программа его базу подогнала под мою).
И т.д.

Да и вааще, не люблю я пользоваться чужими программами, особенно где много наворотов мне не нужных. Обычно делаю свои простенькие редакторы.


 
Val   (2003-12-01 12:52) [8]

Ясно. Вам нужен либо компонент, который умеет выполнять именно скрипты, либо используйте isql любым доступным способом.


 
kaif   (2003-12-01 16:04) [9]

Ты спокойно можешь выполнить из IBQuery или из IBSQL эту свою команду по созданию процедуры.
Единственное, что нужно сделать - призвоить свойству ParamCheck значение False. Иначе компонент пытается все места в тексте, где находит двоеточие, заменить символом вопроса и интерпретировать, как параметры SQL-запроса.
А все так называемые исполнители скриптов именно это и делают. Сначала разбивают скрипт на отдельные команды, а затем передают их на исполнение компоненту IBSQL или другому компоненту, способному отослать команду на сервер. Важно лишь, повторяю, отключить ParamCheck.


 
BlackKing   (2003-12-01 17:27) [10]

Nu kak vsegda, kak tol"ko nashol, tak srazu otvet pojavljajetsja :o)

Vsjo ravno vsem Spasibo :o)

Imenno ParamCheck i portil vsju malinu.



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

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

Наверх




Память: 0.46 MB
Время: 0.007 c
14-75391
Leon crom
2003-11-28 11:53
2003.12.23
вот так бывает


7-75406
Rentgen
2003-10-21 17:34
2003.12.23
canclose:=false


14-75312
Mike Kouzmine
2003-11-24 12:42
2003.12.23
Завтра, страшное дело сказать, что будет. Ваши мнения.


1-75221
shurik_
2003-12-10 01:15
2003.12.23
события


7-75420
volser
2003-10-16 23:37
2003.12.23
Опрос модема





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский