这可能有一个明显的答案,但我的谷歌搜索没有提供和回答
为什么我不能预先形成诸如
之类的查询Select * FROM OBJECT_ID
在这种情况下,我并不是指使用函数Object_ID('TableName'),而是指在sys.Tables中指定的与表关联的实际INT ID。
我刚刚在DB中遇到了两个表,我正在通过sys.Tables工作,碰巧有相同的名字(OE_Down),但是不同的模式(很明显),这就是我想到的。
因此,如果我执行查询SELECT * FROM OE_DOWN,结果是dbo架构,我认为它看起来是默认的。我知道正确的做法是指定模式和表格,但为什么不使用他们的对象ID,因为它们是唯一的。
答案 0 :(得分:3)
因为object_id不是数据库中的对象,所以它只是sys.Tables的一个字段......
并且您不能在字段值上直接生成dml(数据操作语言)语句,而只能在db(模式)对象上创建。
要求sys.tables可用于生成动态sql,但不能用于直接dml语句。