在存储过程中执行SQL命令

时间:2018-03-30 13:28:03

标签: sql sql-server select stored-procedures execute

我想在存储过程中执行SQL命令,然后执行存储过程(在SQL Server中):

CREATE PROC ps_getPerson
    @id INT
AS
BEGIN
    DECLARE @query VARCHAR(MAX);

    SET @query = ' SELECT * FROM Person WHERE id='+@id

    EXEC @query
END

并在

之外执行
EXEC ps_getPerson @id = 1

2 个答案:

答案 0 :(得分:1)

假设这是使用Dynamic SQL的学习实验。

1,你想要用int连接一个字符串。 2,你在没有正确语法的情况下调用SP

CREATE PROC ps_getPerson
    @id int
AS
BEGIN
    DECLARE @query VARCHAR(MAX);
    SET @query = ' SELECT * FROM Person WHERE id='+cast(@id as varchar(50))
EXEC @query
END

要执行

EXEC ps_getPerson 1

答案 1 :(得分:0)

我真的不确定你为什么在你的proc中做动态SQL。除非您有特定要求,否则运行正常选择应该没问题。另外,用明确的字段名称列表替换*。

CREATE PROC ps_getPerson
    @id int
AS
BEGIN
    SELECT * 
    FROM Person 
    WHERE id=@id

END