我想在存储过程中执行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
答案 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