gpt4 book ai didi

c++ - 如何从 ADO/C++ 调用 MSSQL 系统函数?

转载 作者:行者123 更新时间:2023-11-28 08:33:43 26 4
gpt4 key购买 nike

...特别是 MSSQL 2005 中的 fn_listtextendedproperty 系统函数。

我已将扩展属性添加到我的数据库对象,名为“schemaVersion”。在我的 MSVC 应用程序中,使用 ADO,我需要确定该扩展属性是否存在,如果存在,则返回其中的字符串值。

这是执行我想要的操作的 T-SQL 代码。我如何用 C++/ADO 编写它,或者以其他方式完成工作?

select value as schemaVer
from fn_listextendedproperty(default, default, default, default, default, default, default)
where name=N'schemaVersion'

这是我最初尝试的代码。它因代码下方列出的错误而失败:

_CommandPtr cmd;
cmd.CreateInstance(__uuidof(Command));
cmd->ActiveConnection = cnn;

cmd->PutCommandText("select value "
"from fn_listextendedproperty(default, default, default, default, default, default, default) "
"where name=N'schemaVersion'");
VARIANT varCount;
cmd->Execute(NULL, NULL, adCmdText);

...这是我从 ADO 错误集合中提取的错误。输出来 self 的小实用函数,它添加了额外的文本,如线程 ID 等,所以请忽略它。

(Proc:0x1930, Thread:0x8A0) INFO : ===   1 Provider Error Messages : =======================
(Proc:0x1930, Thread:0x8A0) INFO : [ 1] (-2147217900) 'Incorrect syntax near the keyword 'default'.'
(Proc:0x1930, Thread:0x8A0) INFO : (SQLState = '42000')
(Proc:0x1930, Thread:0x8A0) INFO : (Source = 'Microsoft OLE DB Provider for SQL Server')
(Proc:0x1930, Thread:0x8A0) INFO : (NativeError = 156)
(Proc:0x1930, Thread:0x8A0) INFO : ==========================================================

编辑:根据建议更新了调用。还将“SELECT value AS schemaVer”更改为“SELECT value”。

编辑:根据建议将 Execute() 的第一个参数更改为 NULL。这解决了我原来的问题,然后我继续下一步。 :)

最佳答案

尝试为 fn_listextendedproperty 的每个参数指定 NULL 而不是默认值。这应该有望在没有错误的情况下执行,只需让您检索结果作为下一步。

关于c++ - 如何从 ADO/C++ 调用 MSSQL 系统函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/687718/

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