为什么存储过程语法正确,但执行报错,说是没有参数

来源:百度知道 编辑:UC知道 时间:2024/05/11 04:01:19

肯定阿

我给你举个例子

create proc test_proc @test1 int, @test2 int

as
select * from test
if @test1>=@test2
begin
print '第二个传入的值必须比第一个值大'
end
else
begin
while @test1<=@test2
begin
print @test1
set @test1=@test1+1
end
end

如果你这么调用的话

exec test_proc

错误
消息 201,级别 16,状态 4,过程 test_proc,第 0 行
过程或函数 'test_proc' 需要参数 '@test1',但未提供该参数。

如果你

exec test_proc 1

消息 201,级别 16,状态 4,过程 test_proc,第 0 行
过程或函数 'test_proc' 需要参数 '@test2',但未提供该参数。

因为我这个存储过程定义了两个参数

所以你调用的时候必须写两个参数

比如:
exec test_proc 1,2

这样才可以阿

execute immediate mysql into var1 ; 改成 execute immediate sqls into var1 ; tab 表里面没有id这个字段 要么把你实际的存储过程贴上来,我按照你现在的写法执行是没有问题的,只是最后var1的值没用上