| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Хранимая процедура в IB |
| Автор: SPrograMMer 17.7.2005, 19:29 | ||
Создаю инсталяшку для своей проги, прога заточена под InterBase, разные версии которого имеют разные форматы базы данных, поэтому создать чистый *.GDB файл у себя, а потом его просто копировать не подходит, т к используемая у клиента IB может быть другая и соответственно он (IB) может просто не понять структуры того файла, который ему подсовывают. Поэтому делаем так: имеется список SQL запросов, которые последовательно выполняет программы инсталятор. Таблицы (Create Table...), генераторы (Create Generator...), триггеры (Create Trigger..), определение внешних UDF функций (Declare External Function ...), выполняются прекрасно. Прекрасно выполняется и создание хранимой процедуры (Create Procedure...). Но! Для того все это добро "осталось" в базе данных я положительно подтверждаю транзакцию IBTransaction.Commit;, при этом происходит трабла:
и соответственно все это добро (таблицы, триггеры,...) не сохраняются Что за неверное число параметров?! Ошибка не возникает если не создавать хранимку. Что такое происходит и как с этим бороться. Т е как правильно создать и сохранить хранимую процедуру в создаваемой базе данных. ЗЫ: если это имеет значение: хранимка довольно большая (~1500 символов), имеет входные параметры, ничего не возвращает (нет выходных параметров), нет локальных переменных. ЗЗЫ: Delphi 2005 for Win32, InterBase 7.5 |
| Автор: Alex 17.7.2005, 20:05 |
| Так сказать практически ничего нельзя, нужно смотреть SQL, узнать чем ты хотя бы выполняешь SQL и т.д. PS: Пока напрашивается ответ "Ошибка в 17 строке" |
| Автор: SPrograMMer 17.7.2005, 22:33 | ||
| Текст запроса создания процедуры синтаксически правилен, если его выполнить в IBConsole для этой БД - процедура создаётся, а вот в программе - нет.... запросы выполняются через компоненту IBSQL Вот собственно текст хранимки:
Сначала таблица очищается, потом в неё данные вствляются, три раза... |
| Автор: Alex 17.7.2005, 23:02 | ||
| Ну, что тут можно сказать: 1. Если уж хотите пользоваться экспертами, то уж точно не IBConcole, т.к. любой грамотный эксперт скажет, что скрипт для создания процедуры выглядит приблизительно так:
2. FAQ читать нужно http://vingrad.ru/DELPHI-DLP-001854 |
| Автор: SPrograMMer 18.7.2005, 23:26 | ||
ну что ты сразу не сказал?... Добавлено @ 23:32 Зы: номер 1 не пашет, так как ругается сразу на SET, да и нивозможно в IBX.SQL запихнуть более одного законченого выражения SQL. |
| Автор: Alex 19.7.2005, 08:07 | ||
SPrograMMer, кто же базу создает с помощью TSQL, базу все обычно создают с помощью скрипта. |
| Автор: SPrograMMer 21.7.2005, 00:53 | ||||
ну.... век живи-век учись. И за это спасибо. Год назад, например, для парадоксовской базы, я вобще писал что-то типа:
|