Soh*_*pta 4 sql t-sql sql-server stored-procedures sql-server-2008
我想打印一些动态查询来对数据库中的所有表执行过程.这是我到目前为止所写的 -
EXEC SP_MSFOREACHTABLE '
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME="EMAIL_S" AND TABLE_NAME=PARSENAME("?",1))
BEGIN
PRINT ''EXEC DROPCONSTANT @TBLNAME=''+PARSENAME("?",1)
+'', @FLDNAME=''''EMAIL_S'''' ''
PRINT CHAR(10)+CHAR(13)
END
'
Run Code Online (Sandbox Code Playgroud)
输出不是我预期的 -
EXEC DROPCONSTANT @TBLNAME=bill, @FLDNAME='EMAIL_S'
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是 -
EXEC DROPCONSTANT @TBLNAME='bill', @FLDNAME='EMAIL_S'
Run Code Online (Sandbox Code Playgroud)
怎么样呢:
DECLARE @output NVARCHAR(MAX) = N'';
SELECT @output += CHAR(13) + CHAR(10)
+ 'EXEC DROPCONSTANT @TBLNAME=''' + t.name + ''','
+ '@FLDNAME=''EMAIL_S'';'
FROM sys.tables AS t
INNER JOIN sys.columns AS c
ON t.[object_id] = c.[object_id]
WHERE c.name = 'EMAIL_S';
SELECT @output;
-- EXEC sp_executesql @output;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10367 次 |
| 最近记录: |