如何在Sybase存储过程中设置和返回变量



我试着阅读Sybase,但我得到的信息对我来说太不清楚了。我遇到的问题是,我必须在Sybase中编辑这个6000行的存储过程。不用说,这完全是一场噩梦,尤其是对于那些最擅长的不是SQL的人来说。

在过程的顶部,有一个变量被声明(为了这个问题,只使用较短的变量名(:

DECLARE @MY_VARIABLE INT

我熟悉的小SQL是SQL Server,而Sybase感觉有点不同。您究竟是如何设置该变量的值的?在SQL Server中,我会把它想象成这样:

SET @MY_VARIABLE = 1

然而,在手术过程中,我找不到任何地方会发生这样的事情。不过我确实发现了这个:

SELECT @MY_VARIABLE = convert(integer, Member_Number)
FROM ELECTRONIC_FORM NOHOLDLOCK

这就是您在Sybase中设置变量的方式吗?带

SELECT @MY_VARIABLE = 2

例如?

除此之外,如何在过程结束时返回变量的值?我会想象它是这样的:

SELECT @MY_VARIABLE

只要确保这是手术中的最后一件事,但这似乎不起作用。它看起来很像我的感觉,一个变量实际上得到了设置,而不是选择。我只是在这里真的很困惑和失落,提前感谢你的帮助!

CREATE PROCEDURE RETURN_SELECT
AS BEGIN
    DECLARE @MY_VARIABLE int 
    SELECT @MY_VARIABLE = 2
    SELECT @MY_VARIABLE
END

EXEC RETURN_SELECT

输出如下所示:

@MY_VARIABLE
2

就这么简单,不知道是有帮助,还是你想要更多?

确保您清楚是否要将变量作为返回给客户端的结果集进行SELECT,或者您是否应该更好地使用OUTPUT参数变量,在WEEKND的答案中是:

CREATE PROCEDURE RETURN_SELECT
    @MY_VARIABLE int OUTPUT
AS BEGIN
    SELECT @MY_VARIABLE = 2
END

这可能会增加混乱,我希望不会。我不知道你是如何得到结果的,但这可能很重要——一种方法可能比另一种更容易、更好。

这与上面的SET/SELECT讨论是一个单独的问题。此外,当您将结果集选择回客户端时,您可以在SP中的任何位置执行此操作,甚至可以选择多个结果集!

最新更新