所以我必须知道该列是否存在于另一个数据库的表中。我无法切换数据库上下文,也无法使用动态 SQL,因为我必须在标量函数内执行此操作。
我该怎么做?
我可以通过检查 object_id('<database name>.<schema name>.<table name>')
来确定该表是否存在,但我找不到检查该列是否存在的方法。
似乎不可能用object_id()
来做函数,列没有类型 - sys.objects
更新。我完全忘了提到 <database name>
, <schema name>
, <table name>
和 <column name>
是变量,所以不可能使用 information_schema
或 sys
表/ View 。所以应该是这样的
declare
@database_name nvarchar(128),
@schema_name nvarchar(128),
@table_name nvarchar(128),
@column_name nvarchar(128)
if object_id(@database_name + '.' + @schema_name + '.' + @table_name) is not null
print 'Table exists'
else
print 'Table does not exist'
if <??? how to check if column exists ???>
print 'Column exists'
else
print 'Column does not exist'
最佳答案
试试这个..
if exists( select top 1 1
from Sys.tables t
join Sys.columns c
on t.object_id = c.object_id
where t.name = 'Your_Table_name'
and c.name = 'Your_Column_name')
select 'Your Cloumn Exists'
else
select 'Your Cloumn Does not Exist'
关于sql - 是否可以动态检查该列是否存在于另一个数据库的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29696598/