У меня есть cfquery, который я перебираю значениями, чтобы вставить несколько строк в базу данных. Я должен сделать это таким образом, вместо того, чтобы генерировать несколько запросов INSERT в цикле, потому что мне нужен список generatedKeys
после INSERT. Однако мой запрос теперь выдает ошибку ниже. Я знаю, что означает ошибка, но это не имеет смысла, исходя из моего запроса.
Запрос:
<cfquery datasource="#OLMSdatasourceWrite#" result="myResult">
INSERT INTO OLMS_Data_RatioScenarios
(
OLMS_Account_ID,
OLMS_RatioScenario_Name
)
VALUES
(
<cfset numItems = ListLen(AccountListWithSettings)>
<cfset i = 1>
<cfloop list="#AccountListWithSettings#" index="CurrentAccount">
(<cfqueryparam cfsqltype="cf_sql_numeric" value="#CurrentAccount#" maxlength="255">
, <cfqueryparam cfsqltype="cf_sql_clob" value="#requestBody.value#" maxlength="255">
)
<cfif i lt numItems>
,
</cfif>
<cfset i++>
</cfloop>
)
</cfquery>
<cfoutput>Inserted ID is: #myResult.generatedkey#</cfoutput>
Ошибка:
Root Cause:java.sql.SQLException: Column count doesn't match value count at row 1
SQL: INSERT INTO OLMS_Data_RatioScenarios ( OLMS_Account_ID, OLMS_RatioScenario_Name )
VALUES ( ( (param 1) , (param 2) ) , ( (param 3) , (param 4) ) , ( (param 5) , (param 6) ) )
<cfoutput>INSERT INTO .... </cfoutput>
, чтобы легче обнаружить такого рода синтаксические ошибки. Кроме того, я могу скопировать и вставить sql в IDE, если это необходимо. - person Leigh   schedule 06.02.2017VALUES(1,2),(4,5),(7,8);
. Игнорируя параметры, то есть (парам X), обратите внимание, что у вас есть лишние скобки? - person Leigh   schedule 06.02.2017