0

我在 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')

但这不会运行。

4

2 回答 2

1

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')

于 2009-09-03T19:43:29.947 回答
0

在您的第一次执行中,您确定过程中的 par1 为 1 - 我认为您传入的值确实为 NULL。

仅当参数未传入时才使用默认参数,而不是如果它已被赋予一个值,即使它是 NULL。

因此,在您的 cses par3 和 par4 中获得默认值,但 par1 和 par2 获得您传入的内容。

于 2009-08-21T23:37:15.493 回答