【发布时间】:2012-03-30 11:38:05
【问题描述】:
我想打印一些动态查询来对数据库中的所有表执行一个过程。这是我到目前为止写的 -
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
'
输出不是我期望的 -
EXEC DROPCONSTANT @TBLNAME=bill, @FLDNAME='EMAIL_S'
但我真正想要的是 -
EXEC DROPCONSTANT @TBLNAME='bill', @FLDNAME='EMAIL_S'
【问题讨论】:
-
看起来@Aaron 的回答很好地涵盖了这一点,但是如果您将来确实需要
sp_MSForeachtable,它有一个parameter 可以让您过滤它实际执行的表。
标签: sql sql-server sql-server-2008 tsql stored-procedures