这可能有一个明显的答案,但我的谷歌搜索没有提供和回答
为什么我不能预生成诸如之类的查询
Select * FROM OBJECT_ID
在这种情况下,我不是指使用函数Object_ID('TableName'),而是指与sys中指定的表关联的实际INT ID。表格。
我刚刚在数据库中发现了两个表,我正在通过系统进行处理。表和碰巧有相同的名称(OE_Down),但模式不同(显然),这就是我思考的问题。
因此,如果我预生成一个查询SELECT*FROM OE_DOWN,结果就是dbo模式的结果,我认为它看起来是默认的。我知道正确的做法是指定模式和表,但为什么不使用它们的对象ID呢?因为它们比其他任何东西都是唯一的。
因为object_id不是数据库中的对象,所以它只是sys的一个字段。表。。。
您不能对字段值直接使用dml(数据操作语言)语句,而只能对db(模式)对象使用dml语句。
询问sys.tables可以用于生成动态sql,但不能用于直接dml语句。
您可以执行一个可以连接的脚本。使用SQL命令EXEC('')
获取对象名称:
SELECT @object_name=name FROM sys.tables WHERE object_id=@object_id
最后:
EXEC('SELECT * FROM '+@object_name)