Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Изменение хранимой процедуры [D5, IB6.x]


Сергей Ч ©   (2003-07-07 12:01:00) 

Добрый день! Хочу изменить хранимую процедуру из своего приложения. Использую IBQuery. При ExecSQL ругается на строчку "SELECT XX FROM XXX INTO :TMP" видимо считая :TMP параметром. Помогите, как это можно сделать?


Сергей Ч   (2003-07-07 14:39:00) [1]

Спасибо всем! после апдэйта IBX заработало с TIBSQL


Zacho   (2003-07-07 14:21:00) [2]


> Johnmen © (07.07.03 14:10)
> То есть, делается попытка выполнить с помощью IBQuery такую
> команду ALTER PROCEDURE .... ?
> Не пройдет. Т.к. Available in DSQL, and isql.

То есть работать все-таки должно. По крайней мере на BDE с TQuery работало у меня отлично, а вот на IBX не пробовал, уже несколько лет все изменения метаданных делаю только скриптами. Но по идее должно и в IBX работать, так что наиболее вероятно - баг в IBX.


Johnmen   (2003-07-07 14:10:00) [3]

>Сергей Ч

То есть, делается попытка выполнить с помощью IBQuery такую команду ALTER PROCEDURE .... ?
Не пройдет. Т.к. Available in DSQL, and isql.
И второй момент - в IBX имеют место глюки, в частности с областью XSQLDA. Про это можно почитать на ibase.ru (если не запамятовал...:))


Сергей Ч   (2003-07-07 13:33:00) [4]

C TIBSQL тоже самое


Zacho   (2003-07-07 13:30:00) [5]


> Сергей Ч (07.07.03 13:23)

Черт знает, должно работать. Возможно, баг в твоей версии IBX, попробуй поставить последнюю (или наоборот, одну из предидущих). Еще попробуй вместо TIBQuery использовать TIBSQL, хотя по идее должно быть то же самое.


Сергей Ч   (2003-07-07 13:23:00) [6]

Zacho © (07.07.03 12:07)
TIBQuery.ParamCheck:=false; - решит эту проблему

Попробовал - выдаёт ошибку XSQLDA index out of range


Edward   (2003-07-07 12:27:00) [7]

Понятно, это текст хранимой процедуры, не сразу сообразил, что он спрашивает, спасибо Zacho © (07.07.03 12:17), за подробное объяснение сути вопроса! :-))


Zacho   (2003-07-07 12:17:00) [8]


> Edward (07.07.03 12:10)

В данном случае :TMP - это не параметр запроса, а переменная в хранимой процедуре. ParamCheck:=false нужно именно для выполнения запросов DDL (а не DML с параметрами !), в которых могут встречаться конструкции, синтаксически аналогичные параметрам, но на самом деле таковыми не являющимися.


Edward   (2003-07-07 12:13:00) [9]

IBQuery2.SQL.Clear;

IBQuery2.SQL.Add("INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION)");
IBQuery2.SQL.Add("VALUES (:Name, :Capital, :Population)");

IBQuery2.Params[0].AsString := "Lichtenstein";
IBQuery2.Params[1].AsString := "Vaduz";
IBQuery2.Params[2].AsInteger := 420000;
IBQuery2.ExecSQL;


Edward   (2003-07-07 12:10:00) [10]

Что значит: Хочу изменить хранимую процедуру из своего приложения? :TMP - это параметр, до ExecSQL ему нужно присвоить значение. Все переменные с двоеточием будут являться параметрами. А если изменить процедуру надо: ALTER PROCEDURE.


Alexandr   (2003-07-07 12:07:00) [11]

paraMCheck:=false


Zacho   (2003-07-07 12:07:00) [12]

TIBQuery.ParamCheck:=false; - решит эту проблему


Наверх

Титульная страница Поиск, карта сайта Написать письмо