我在 Sybase ASA 中有一个存储过程“测试”,例如 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')
但这不会运行。
我在 Sybase ASA 中有一个存储过程“测试”,例如 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')
但这不会运行。
1) 第一个示例不起作用,因为您传入了 NULL 值。
2)我不太确定您为他的 SP 使用哪种语法(从未听说过“par1”),但使用标准语法,您需要做的是在 SP 和调用中具有命名参数:
创建过程测试(INOUT var1 INT DEFAULT 0,
INOUT var2 VARCHAR(50) DEFAULT NULL, INOUT var3 VARCHAR(100) DEFAULT NULL, INOUT var3 VARCHAR(10) DEFAULT '')
然后打电话
调用测试(var2 = 'test')
在您的第一次执行中,您确定过程中的 par1 为 1 - 我认为您传入的值确实为 NULL。
仅当参数未传入时才使用默认参数,而不是如果它已被赋予一个值,即使它是 NULL。
因此,在您的 cses par3 和 par4 中获得默认值,但 par1 和 par2 获得您传入的内容。