powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Динамический SQL четвертого типа
15 сообщений из 15, страница 1 из 1
Динамический SQL четвертого типа
    #36147385
MB_SQL_CM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для дальнейшей работы(будет использоваться неизвестное количество параметров) требуется переделать работающий запрос

PREPARE SQLSA FROM 'UPDATE NR_WORKER SET NR_WK_NAME = ? WHERE NR_WK_ID = ?' USING SQLCA;
EXECUTE SQLSA USING :sle_name.text, :nr_id;

в SQL 4 типа. К сожалению в документации не нашел ни одного примера как это делается. У меня получилось вот что:

DECLARE my_proc DYNAMIC PROCEDURE FOR SQLSA;
PREPARE SQLSA FROM 'UPDATE NR_WORKER SET NR_WK_NAME = ? WHERE NR_WK_ID = ?' USING SQLCA;
DESCRIBE SQLSA INTO SQLDA;
SetDynamicParm(SQLDA, 1, sle_name.text)
SetDynamicParm(SQLDA, 2, nr_id)
EXECUTE DYNAMIC my_proc using descriptor sqlda;

При выполнении выдает ошибку. Подскажите плз как правильно.
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36147521
Dmitry..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какая ошибка? какая субд?
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36147688
MB_SQL_CM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Среда PB65. СУБД MS SQL 2005. Ошибку отлавливаю: SQLCA.SQLCode = -1.
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36147734
Dmitry..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a SQLCA.SQLErrorText что говорит?
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36147791
MB_SQL_CM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry..a SQLCA.SQLErrorText что говорит?

A SQLServer request resulted in a bad return code or status but no error message was returned
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36148655
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DECLARE my_proc DYNAMIC PROCEDURE CURSOR FOR SQLSA;
Про разницу почитайте в хелпе (не верю что там нет - лично видел 10 лет назад).
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36149082
MB_SQL_CM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovsky DECLARE my_proc DYNAMIC PROCEDURE CURSOR FOR SQLSA;
Про разницу почитайте в хелпе (не верю что там нет - лично видел 10 лет назад).

? Курсор тоже есть в четвертом типе, но он ведь применяется для пошаговой последовательной обработки записей с оператором FETCH ?
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36149272
MB_SQL_CM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Единственное что нашел по данному вопросу:
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc37781_1150/html/psref/CCJBBCGF.htm

Тут примеры только для Cursor с Select и Procedure с хранимой процедурой без лишних комментариев. Если я правильно понял, нужной функциональностью(Update и DELETE) SQL type 4 просто не обладает.
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36151147
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MB_SQL_CMЕсли я правильно понял, нужной функциональностью(Update и DELETE) SQL type 4 просто не обладает.
Не правильно. Динамический SQL 4-го типа поддерживает операторы SQL (Select, Insert, Update и Delete). Сейчас не помню, по моему есть информация в книге Симона Галлагера "PowerBuider 6.0"
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36151153
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MB_SQL_CM
Нужно было сразу посмотреть Вашу ссылку. Так там всё четко написано, читайте внимательнее про SetDynamicParm и всё поймете.
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #36152573
MB_SQL_CM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxATCMB_SQL_CMЕсли я правильно понял, нужной функциональностью(Update и DELETE) SQL type 4 просто не обладает.
Не правильно. Динамический SQL 4-го типа поддерживает операторы SQL (Select, Insert, Update и Delete). Сейчас не помню, по моему есть информация в книге Симона Галлагера "PowerBuider 6.0"

Вот сейчас совсем внимательно прочитал.

PREPARE DynamicStagingArea FROM SQLStatement
{USING TransactionObject} ;

SQLStatement - A string containing a valid SQL SELECT statement

Из этой книги я сперва информацию и брал. Там еще меньше написано, возможно в оригинале и не так. Потратил кучу времени. Не могли блин сразу написать что ничего кроме Select и процедуры не может. В книге об этом вообще ни слова, а из контекста складывается впечатление что все может.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Динамический SQL четвертого типа
    #37265796
griniland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А он и может ВСЁ!
Только не из процедуры, а из курсора.
Курсору делаешь open без фетчей - выполняется то, что ты хочешь.
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #37337987
ДГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так все-таки - работает или нет динамический SQL 4 типа c SQL DML?

Пытаюсь реализовать такой алготирм:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
string sqls = "update department set name = ? where id = ?"
PREPARE SQLSA FROM :sqls using SQLCA;
DESCRIBE SQLSA INTO SQLDA ;
if SQLCA.SQLCode <>  0  then MessageBox("Error",SQLCA.SQLErrText)
SQLDA.SetDynamicParm( 1 ,  1 )
SQLDA.SetDynamicParm( 2 , "name")
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;
OPEN DYNAMIC my_cursor USING DESCRIPTOR SQLDA;
if SQLCA.SQLCode <>  0  then MessageBox("Error",SQLCA.SQLErrText)
CLOSE my_cursor;

Выдает ошибку при вызове "OPEN DYNAMIC my_cursor":

SQLSTATE = HY000
[ODBC Firebird Driver][Firebird]Dynamic SQL Error
SQLErrorCode = -104
Token unknown - line 1, column 53
WHERE


То же происходит и при попытке использования SQL Insert:
Код: plaintext
1.
string sqls = "insert into department (id, name) values (?,?)"

Использую БД Firebird, соединение из PB через ODBC драйвер...
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #37338072
ДГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вынужден сообщить, что таки да - работает!!!

Вопреки тому, что было написано выше (не пытаясь обидеть автора):
Anatoly Moskovsky DECLARE my_proc DYNAMIC PROCEDURE CURSOR FOR SQLSA;
Про разницу почитайте в хелпе (не верю что там нет - лично видел 10 лет назад).

После того, как изменил код на тот что приведен ниже, все заработало!!!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
string sqls = "update department set name = ? where id = ?"
PREPARE SQLSA FROM :sqls using SQLCA;
DESCRIBE SQLSA INTO SQLDA;
if SQLCA.SQLCode <>  0  then MessageBox("Error",SQLCA.SQLErrText)
SQLDA.SetDynamicParm( 1 , 'name')
SQLDA.SetDynamicParm( 2 ,  1 )
DECLARE my_proc DYNAMIC PROCEDURE FOR SQLSA;
EXECUTE DYNAMIC my_proc USING DESCRIPTOR SQLDA;
if SQLCA.SQLCode <>  0  then MessageBox("Error",SQLCA.SQLErrText)
CLOSE my_proc;
commit using SQLCA;

Не знаю, почему в данном случае получилось именно с динамической процедурой, хотя все пишут что это неправильно... Возможно это особенность Firebird или драйвера ODBC... Использую PB 11.5.
...
Рейтинг: 0 / 0
Динамический SQL четвертого типа
    #37340671
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
05.07.2011 23:35, ДГ пишет:

> все пишут что это неправильно...

Бессмысленное усложнение.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Динамический SQL четвертого типа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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