1

FreeTDSライブラリを使用するために、古いデータベースコードの簡単なプロトタイプポートを試しています。現在、私は次のようなクエリを見ています

SELECT x,y,z from MyTable WHERE id = @arg1

クエリを実行すると、当然、次のようなエラーが発生します。Must declare the scalar variable "@arg1".

しかし、1つのことが私にはわかりません。この変数を宣言するにはどうすればよいですか?APIドキュメントとコード例を何度も調べましたが、この些細なタスクを解決する方法が見つからないようです。

私が現在使用しているコードは次のとおりです。

if(dbcmd(proc, "SELECT x,y,z from MyTable WHERE id = @arg1") != SUCCEED) {
  return fail("Failed to dbcmd()"); 
}

if(dbsqlexec(proc) != SUCCEED) {
  return fail("Failed to dbsqlexec()");
}

while((retcode=dbresults(proc)) == SUCCEED) {
  while(dbnextrow(proc) != NO_MORE_ROWS) {
    int len = dbdatlen(proc, 1);
    char* data = (char*)dbdata(proc, 1);
    cout << string(data, len) << endl;
  }
}
4

1 に答える 1

0

"DECLARE@MyVariableint"または"@arg1"、OleDbType.Integer "のいずれかを試して、dbcmd(dbproc、" HERE ");の後にdbcmd(proc、" SELECT ..... ");として追加できます。

dbcmd(dbproc,"SELECT x,y,z from MyTable WHERE id = @arg1");
dbcmd(dbproc, "DECLARE @arg1 int" );

APIがあるかどうかはわかりませんが、これがあなたの使い方だと確信しています。

于 2012-06-02T22:07:20.643 に答える