我在Sybase ASA中有一个存储过程‘’test‘,例如有4个参数。
par1 INT = 0,
par2 VARCHAR(50) = NULL,
par3 VARCHAR(100) = NULL,
par4 VARCHAR(10) = ''现在,我想使用par1作为默认值来执行这个存储过程。
call test(NULL, 'test')但是par1的实际值i不是0,而是1!
我也试过了
call test(DEFAULT, 'test')但这并不能运行。
发布于 2009-09-03 19:43:30
1)第一个示例不起作用,因为您传入了空值。
2)我不太清楚您使用的是哪种语法(从未听说过"par1"),但是使用标准语法,您需要做的是在SP和调用中命名参数:
CREATE PROCEDURE测试( INOUT var1 INT DEFAULT 0,
INOUT var2 VARCHAR(50)默认NULL,INOUT var3 VARCHAR(100)默认NULL,INOUT var3 VARCHAR(10)默认'')
然后调用
测试调用测试(var2 =‘
’)
发布于 2009-08-21 23:37:15
在你第一次执行的时候,你确定过程中的par1是1吗--我认为它实际上是空的,你传入的值。
仅当未传入参数参数时才使用默认参数,如果已为其指定了值(即使该值为空),则使用默认参数。
因此,在您的cses中,par3和par4获取默认值,而par1和par2获取您传入的内容。
https://stackoverflow.com/questions/1312336
复制相似问题