gpt4 book ai didi

sql-server - FreeTDS 中的@变量

转载 作者:太空宇宙 更新时间:2023-11-04 04:23:55 25 4
gpt4 key购买 nike

我正在尝试对一些旧数据库代码进行快速原型(prototype)移植以使用 FreeTDS 库。目前,我正在查看类似的查询

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

当我执行查询时,我自然会得到一个错误,例如 Must statements 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;
}
}

最佳答案

您可以尝试将“DECLARE @MyVariable int”或“@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,但我确信这就是您可以使用它的方式。

关于sql-server - FreeTDS 中的@变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10861958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com