Что-то не так с этим SQL-запросом?

Я использую LabVIEW и Database Toolkit для выполнения SQL-запроса, и он продолжает ругаться по причинам синтаксиса. Я использую MySQL через соединитель ODBC. Каждая строка должна иметь в конце символ новой строки, кроме последней.

Ошибка, которую выдает LabVIEW, такова:

Возможная(-ые) причина(-ы):

Ошибка ADO: 0x80040E14 Исключение возникло в поставщике Microsoft OLE DB для драйверов ODBC: [MySQL][Драйвер ODBC 5.1][mysqld-5.1.42-community] У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1092'; ОБНОВЛЕНИЕ plc_a' в строке 2 в NI_Database_API.lvlib:Conn Execute.vi->UpdatePLCAddressesTable.vi->DevelopSQL.vi

UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1132';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1092';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1103';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1105';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1161';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1167';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1129';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1088';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1098';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1099';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1100';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1117';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1118';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1106';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1107';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1108';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1109';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1110';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1111';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1151';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1154';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1157';
UPDATE plc_addresses SET CurrValue = '-1023.75' WHERE Address = '1119';
UPDATE plc_addresses SET CurrValue = '-1023.75' WHERE Address = '1120';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1165';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1095';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1164';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1096';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1097';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1121';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1122';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1123';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1124';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1089';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1101';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1112';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1113';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1114';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1115';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1116';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1091';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1141';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1142';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1143';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1139';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1153';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1148';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1145';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1150';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1147';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1149';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1146';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1104';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1093';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1125';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1126';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1127';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1094';
UPDATE plc_addresses SET CurrValue = '0.00' WHERE Address = '1114';
UPDATE plc_addresses SET CurrValue = '-2522.00' WHERE Address = '1114';



person Ken    schedule 27.01.2010    source источник


Ответы (4)


Я думаю, вам нужно отправить их как отдельные операторы SQL, а не все сразу.

person Kaleb Brasee    schedule 27.01.2010
comment
+1 Там нет места, которое сообщает серверу, что вы выполняете несколько запросов в одном. Его необходимо либо объединить в один запрос, либо разделить на несколько запросов на обновление. - person David; 28.01.2010
comment
Да, то же самое с JDBC. В JDBC можно запускать несколько операторов одновременно, но вы добавляете их в пакет по отдельности, а затем запускаете пакет. Я предполагаю, что в ODBC есть аналогичная функция. - person Kaleb Brasee; 28.01.2010

ADO не поддерживает выполнение нескольких операторов в одной операции, вам нужно будет выполнять их последовательно один за другим. Учитывая, что все они похожи, вы можете использовать Подготовленные операторы. .

person Vinodh Ramasubramanian    schedule 27.01.2010
comment
+1. Предоставленное исключение жалуется на второй оператор в пакете. - person p.campbell; 28.01.2010

Согласно Mimer Validator, ваш SQL в порядке. Я предполагаю, что по какой-то причине ему не нравятся точки с запятой.

person Daniel T.    schedule 27.01.2010

Включить FLAG_MULTI_STATEMENTS

Ссылка: http://dev.mysql.com/doc/refman/5.1/en/connector-odbc-configuration-connection-parameters.html

person tanerkay    schedule 27.01.2010