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

发布于 2024-08-02 11:04:39 字数 355 浏览 10 评论 0原文

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

,但没有运行。

I have a stored procedure'test' in Sybase ASA with for example 4 parameters.

par1 INT = 0,
par2 VARCHAR(50) = NULL,
par3 VARCHAR(100) = NULL,
par4 VARCHAR(10) = ''

Now I want to execute this stored procedure with par1 as its default value.

call test(NULL, 'test')

But the actual value of par1 i not 0, but 1!

I also tried

call test(DEFAULT, 'test')

but that doesn't run.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

紅太極 2024-08-09 11:04:39

1) 第一个示例不起作用,因为您传入了 NULL 值。

2)我不太确定你的 SP 使用哪种语法(从未听说过“par1”),
但使用标准语法,您需要做的是在 SP 和调用中具有命名参数:

创建过程测试( INOUT var1 INT DEFAULT 0,

 INOUT var2 VARCHAR(50) 默认为 NULL,

                   INOUT var3 VARCHAR(100) 默认为空,

                   INOUT var3 VARCHAR(10) 默认 '')

然后调用

调用测试(var2 = 'test')

1) The first example did not work because you passed in a NULL value.

2) I'm not quite sure of which syntax you are using for his SP (never heard of "par1"),
but using standard syntax, what you need to do is to have named parameters in SP and in the call:

CREATE PROCEDURE test( INOUT var1 INT DEFAULT 0,

                   INOUT var2 VARCHAR(50)  DEFAULT NULL,

                   INOUT var3 VARCHAR(100) DEFAULT NULL,

                   INOUT var3 VARCHAR(10)  DEFAULT '')

and then call

CALL test (var2 = 'test')

魂ガ小子 2024-08-09 11:04:39

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

默认参数仅在未传入 poarameter 时使用,而不是在已给定值的情况下使用,即使它为 NULL。

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

In your first execution are you sure that par1 in the procedure is 1 - I think it is really NULL the value you passed in.

Default parameters are only used if the poarameter is not passed in not if it has been given a value even if it is NULL.

Thus in you cses par3 and par4 get the default but par1 and par2 get what you pass in.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文