我正在尝试一个快速的原型-移植一些旧的数据库代码来使用FreeTDS库。目前,我正在查看类似于以下内容的查询
SELECT x,y,z from MyTable WHERE id = @arg1当我执行查询时,我自然会得到像Must declare the scalar variable "@arg1".这样的错误
但有一件事我没有意识到。我如何声明这个变量?我一遍又一遍地看着API docs and code examples,似乎找不到如何解决这个本应微不足道的任务。
我目前使用的代码是:
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;
}
}发布于 2012-06-03 06:07:21
您可以尝试“声明@MyVariable int”或"@arg1",OleDbType.Integer“在您的dbcmd(proc,"SELECT .....”)后添加为dbcmd(dbproc,"HERE“);
dbcmd(dbproc,"SELECT x,y,z from MyTable WHERE id = @arg1");
dbcmd(dbproc, "DECLARE @arg1 int" );我不认为有任何API,但是我确信这是你可以使用它的方式。
https://stackoverflow.com/questions/10861958
复制相似问题