sql-server - FreeTDS 中的@变量

标签 sql-server linux freetds

我正在尝试对一些旧数据库代码进行快速原型(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/

相关文章:

sql-server - 如何让 View 显示当前的列定义?

sql-server - 在 Power BI 卡中,我可以在数据标签上方显示标题吗?

c++ - 如何使用 C++ 从 RGB 缓冲区调整图像大小

c++ - 插入 vector 后内存损坏

python - 如何在短时间内使用 python 从 Ubuntu 16.04 连接到 SQL Server 2016?

sql-server - 无法使用 pymssql 连接到 SQL Server 数据库,但可以使用底层 freetds tsql 连接

sql - 在数据库中存储图像引用的最佳实践

sql - 将 DATEPART 存储在表中

linux - SSH 命令不是从 bash 脚本内部运行,而是从 shell 运行

python - freeTDS:OSX 上缺少 libtdsodbc.so 文件?