PowerBuilder Вставить запись в таблицу SQL, если она недоступна.

Я новичок в PowerBuilder Classic 12. Мне нужен пример кода, чтобы проверить, доступна ли запись, и если нет, вставьте ее из текстового поля. Мне, вероятно, понадобится DataStore, поскольку кто-то предложил отдать предпочтение операторам SQL. Спасибо.


person Wepex    schedule 13.07.2012    source источник
comment
Не используйте хранилище данных как золотой молот. Когда одиночный sql-элемент кажется полезным, используйте простую инструкцию sql.   -  person Seki    schedule 13.07.2012
comment
Я сделал это с оператором Sql, но оператор select был пропущен, а оператор вставки выполнен. Помогите с операторами SQL   -  person Wepex    schedule 13.07.2012
comment
Я не уверен, что правильно понял. Можете ли вы показать код?   -  person Seki    schedule 13.07.2012
comment
@Seki: По моему опыту, встроенный SQL часто оказывается золотой кувалдой.   -  person Hugh Brackett    schedule 14.07.2012
comment
@Seki Во многих случаях я бы не согласился. DataWindow/DataStore превзойдет по производительности большинство встроенных SQL, потому что объект DW хранит DESCRIBE, сделанный во время разработки, тогда как встроенный SQL должен делать это во время выполнения. (Давайте пропустим такие преимущества, как централизованная обработка ошибок, защита от SQL-инъекций и т. д. У меня осталось всего 272 символа!!) Я бы использовал встроенный SQL, чтобы восполнить недостаток DW, который предназначен для ВСТАВКИ/ОБНОВЛЕНИЯ одной строки. . Если вы можете обрабатывать несколько строк с помощью одного оператора DML, это (ИМХО) время для использования встроенного SQL.   -  person Terry    schedule 15.07.2012
comment
@RGI использую sql server 2008 и powerbuilder classic 12.5.   -  person Wepex    schedule 15.07.2012
comment
Вы сказали: я сделал это с оператором Sql, но оператор select был пропущен, а оператор вставки выполнен. Вы говорите о встроенном SQL? Вы сделали выбор, используя переменные хоста или курсор? Если вы использовали курсор, помните, что вам нужно определить его, а затем выбрать, чтобы получить значения. Я согласен с Хью, что во многих случаях лучше использовать datawindow/dataobject. Кажется, что многие проблемные области программы PB по той или иной причине оказываются встроенными SQL.   -  person Rich Bianco    schedule 27.10.2012


Ответы (1)


Я не уверен, что это отвечает на ваш вопрос, но вот:

строка ls_CheckRecord строка ls_InsertRecord

SELECT record2Check INTO :ls_Check FROM myTable WHEREconditionsMet;

Если ( SQLCA.SQLCode ‹> 0 ) Then Messagebox("Ошибка SQL",SQLCA.SQLErrText) Возвращает End, если

Если (НЕ IsNull(ls_Check)) Then ls_InsertRecord = sle_ToInsert.Text

ВСТАВИТЬ myTable (myColumn) VALUES (:ls_InsertRecord) ;

Если ( SQLCA.SQLCode ‹> 0 ) Then Messagebox("Ошибка SQL", SQLCA.SQLErrText) Вернуть End if End if

person Little John    schedule 13.12.2012