我在Sybase ASA中有一个存储过程'test',例如4个参数。
par1 INT = 0,
par2 VARCHAR(50) = NULL,
par3 VARCHAR(100) = NULL,
par4 VARCHAR(10) = ''
现在我想以par1作为默认值来执行此存储过程。
call test(NULL, 'test')
但是par1的实际值不是0,而是1!
我也试过
call test(DEFAULT, 'test')
但这不会运行。
答案 0 :(得分:1)
1)第一个示例不起作用,因为您传入了NULL值。
2)我不太确定你的SP使用哪种语法(从未听说过“par1”), 但是使用标准语法,您需要做的是在SP和调用中使用命名参数:
CREATE PROCEDURE测试(INOUT var1 INT DEFAULT 0,
INOUT var2 VARCHAR(50) DEFAULT NULL, INOUT var3 VARCHAR(100) DEFAULT NULL, INOUT var3 VARCHAR(10) DEFAULT '')
然后致电
CALL测试(var2 ='test')
答案 1 :(得分:0)
在你的第一次执行中你确定过程中的par1是1 - 我认为你传入的值真的是NULL。
默认参数仅在没有传入参数时使用,如果已经为其赋值,即使它是NULL,也会使用默认参数。
因此,在你的情况下,par3和par4获得默认值,但par1和par2获得你传入的内容。