powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подскажите, почему не работает динамический SQL
6 сообщений из 6, страница 1 из 1
Подскажите, почему не работает динамический SQL
    #32871049
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПБ 9.0 АСА 9.0

PREPARE SQLSA FROM "SELECT max(number) FROM ?" USING my_trans;
DESCRIBE SQLSA INTO SQLDA;

DECLARE max_value DYNAMIC CURSOR FOR SQLSA;
SetDynamicParm(SQLDA, 1,"table_one")

OPEN DYNAMIC max_value USING DESCRIPTOR SQLDA;
FETCH max_value USING DESCRIPTOR SQLDA;
MESSAGEBox('',string(SQLDA.GetDynamicNumber(1)))
CLOSE max_value;

Выдает -1.
...
Рейтинг: 0 / 0
Подскажите, почему не работает динамический SQL
    #32871148
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то что вы пытаетесь пропихнуть в PREPARE не является SQL выражением.
(A string containing a valid SQL SELECT statement.)
ну если надо разные таблицы подставлять - формируйте sql-statement для prepare уже с нужной таблицей.
и вообще Вам в данном случае format 4 не нужен. вполне обошлись бы и третьим.
А для чего вообще все эти .... ухищрения мягко говоря?
может по другому как-нибудь проблема решается?
...
Рейтинг: 0 / 0
Подскажите, почему не работает динамический SQL
    #32871683
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объсню смысл задачи!
У меня несколько таблиц, в которых по пожеланию юзверя необходимо проапдейтить некоторые поля.(что делается крайне редко)
Так как таблиц не мало, и интерфейс изменения полей для всех одинаков я
в ПБ зделал окно в которое в качестве параметров передаю имя таблицы и имя изменяемого столбца.....................................................!
Дальше вроде понятно......., пытаюсь применить динамический SQL для совершения Update...............!
Наверное будет более благоразумней написать ХП! Но решил попробовать данныйм способом.
...
Рейтинг: 0 / 0
Подскажите, почему не работает динамический SQL
    #32871768
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ls_Table = "table_one"
ls_Sql = "SELECT max(number) FROM " + ls_Table
...
Рейтинг: 0 / 0
Подскажите, почему не работает динамический SQL
    #32872793
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quote Вопросник]Дальше вроде понятно.......[/quote]ну-ну...
понятно, да?

для выполнения Update достаточно сделать вот так:
Код: plaintext
1.
2.
ls_sql = "UPDATE " + ls_myTable + " SET "+ ls_mycolumn + " = xxxxx"
Execute Immediate :ls_sql
т.е. format 1
PB Help: "Use this format to execute a SQL statement that does not produce a result set and does not require input parameters."

format 3 используется если требуется обработка resultset.
"Use this format to execute a SQL statement that produces a result set in which the input parameters and result set columns are known at compile time."
т.е. для select. Зачем для Update курсор? Откуда там resultset?

format 4 ( то что было фактически в исходном постинге )
вообще редко используется, поскольку нужен он для обработки resultset заранее неизвестной структуры.
"Use this format to execute a SQL statement that produces a result set in which the number of input parameters, or the number of result-set columns, or both, are unknown at compile time."

Все цитаты - из хелпа по билдеру.
так что хелп надо читать вдумчиво.
И выбирать самый простой вариант, а не самый сложный.
...
Рейтинг: 0 / 0
Подскажите, почему не работает динамический SQL
    #32873341
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВСЕ! На форум ни нагой,(разве что почитать). Спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подскажите, почему не работает динамический SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]