Я новичок в PowerBuilder Classic 12. Мне нужен пример кода, чтобы проверить, доступна ли запись, и если нет, вставьте ее из текстового поля. Мне, вероятно, понадобится DataStore, поскольку кто-то предложил отдать предпочтение операторам SQL. Спасибо.
PowerBuilder Вставить запись в таблицу SQL, если она недоступна.
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