Cod*_*n03 0 sql-server sql-server-2016
假设我有一个Name, Date, StoredProcedure在SQL Server 2016 中有列的表
我需要查询此表并循环遍历存储过程列并检查数据库中是否存在此存储过程.如果它不存在,那么我需要仅为存储过程列使该行为null.
这是我尝试过但它不起作用
Select m1.StoredProcedure
from MyTable m1
where
IF NOT EXISTS (SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'StoredProcedure')
AND type IN (N'P', N'PC'))
Then Update MyTable m2
Set StoredProcedure = ''
Where m2 StoredProcedure = m1.StoredProcedure
Run Code Online (Sandbox Code Playgroud)
我怀疑你所追求的是:
UPDATE MT
SET StoredProcedure = NULL
FROM MyTable MT
LEFT JOIN sys.procedures p ON MT.StoredProcedure = p.[name]
WHERE p.object_id IS NULL;
Run Code Online (Sandbox Code Playgroud)
还要注意''并且NULL不一样.Set StoredProcedure = ''但是,在您的示例SQL 中,您在问题中声明"我需要为存储过程列使该行为空".我假设你想要NULL而不是一个空字符串('').