如何在我的存储过程中使用动态查询

问题描述 投票:0回答:1

我创建了一个存储过程来删除主键。

这就是我所做的:

ALTER PROCEDURE uspQueries 
    (@TableName sysname)
AS
BEGIN
    DECLARE @MyQuery VARCHAR(MAX);
    DECLARE @MyConstraint VARCHAR(25);

    SET @MyConstraint = 'PK_' + CAST (@TableName AS VARCHAR(25) );
    SET @MyQuery = 'ALTER TABLE ' + QUOTENAME(@TableName) + ' DROP CONSTRAINT ' + @MyConstraint + ' WITH ( ONLINE = OFF )';

    PRINT @MyQuery + CHAR(10) + @MyConstraint
END;

我使用

执行它
EXEC uspQueries QUERYBL

打印命令向我显示查询文本和约束:

ALTER TABLE [QUERYBL] 
    DROP CONSTRAINT PK_QUERYBL WITH ( ONLINE = OFF )

PK_QUERYBL

对我来说看起来还不错。然而钥匙并没有消失。如果我运行查询

ALTER TABLE [QUERYBL] 
    DROP CONSTRAINT PK_QUERYBL WITH ( ONLINE = OFF ) 

直接钥匙立刻消失。

我的错误是什么?

谢谢您的帮助

sql variables stored-procedures dynamic
1个回答
0
投票

真蠢!我忘记执行语句了!

© www.soinside.com 2019 - 2024. All rights reserved.