このコードはexecuteQueries.ecファイルにあります
sprintf(sqlQuery,
"select distinct e.emp_id, e.join_date \
from employees e
where e.emp_id in (?) and e.dob <= '%s')");
$prepare empDataStmt from $sqlQuery;
if (sqlca.sqlcode)
{
fprintf(stderr, "Error %d in prepare empDataStmt%s\n",
sqlca.sqlcode, sqlQuery);
return 0;
}
$declare empDataCursor cursor for incptDatesStmt;
if (pcs_sql_check("Error in declaring empDataCursor Stmt"))
{
return 1;
}
$open empDataCursor using $empIds_,dob_ ;
コードをdbxして印刷するとempIds_
、コンソールに次のように表示されます。
""04-Emp1","W2-Emp2""
これは、empIds_の内容が"04-Emp1","W2-Emp2"
(引用符を含む)であることを意味します。問題は、その数がempIds
1から100または500までの範囲である可能性があるということです。たとえば、次のようにすることもできます。
"04-Emp1","W2-Emp2","04-Emp4","W2-Emp3","0A-Emp1","E2-Emp7"
このため、コードを機能させることができません。誰かが「?」を使用してこのコードを書くのを手伝ってもらえますか?任意の数を処理できるパラメーター化されたクエリの場合empIds
。empIds_のコンテンツには、常に二重引用符が埋め込まれていることに注意してください。これが良いことなのか悪いことなのかはわかりませんが、それを防ぐために何もできません。