Sybase ASA 9存储过程,使用默认参数

时间:2009-08-21 14:34:10

标签: parameters sybase-asa

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

但这不会运行。

2 个答案:

答案 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获得你传入的内容。