这里的答案说信息是从sys.objects
视图检索的。但是,这个视图只有schema的表名字段,它有schema_id。
它是否为object_id()
函数使用自关联,或者它是否查询其他系统表/视图获取模式名称?
我不能直接使用object_id(),因为我的代码:
std::string query = "SELECT object_id(?)";
失败,因为在查询的SELECT
子句中禁止绑定参数。
所以我需要编写实际的查询来检索它。
有人能帮帮我吗?
基本上我在找这样的东西:
SELECT object_id from sys.objects WHERE name = <table_name> AND schema = <schema_name>.
然而,我不知道我在哪里可以得到schema
字段…
编辑:
看起来正确的查询应该是
SELECT object_id FROM sys.objects o, sys.schemas s WHERE s.schema_id = o.schema_id AND o.name = <table_name> AND s.name = <schema_name>
但试图运行它管理工作室我没有得到任何行。
所以,我发布的最后一个查询是正确的。
问题是我需要发出:
USE db_name;
因为很明显,即使我的ODBC字符串包含DB名称,我也必须显式地发出"USE"命令。