SQL从Object_ID中选择*



这可能有一个明显的答案,但我的谷歌搜索没有提供和回答

为什么我不能预生成诸如之类的查询

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)

相关内容

  • 没有找到相关文章

最新更新