我想打印一些动态查询以在数据库中的所有表上执行一个过程。这是我到目前为止所写的 -

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'

最佳答案

您需要添加一堆 '

PRINT ''DROPCONSTANT @TBLNAME=''''''+PARSENAME("?",1)+'''''', @FLDNAME=''''EMAIL_S'''' ''

10-08 01:28