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

时间:2015-09-01 12:51:16

标签: sql sybase

我试图阅读Sybase,但我收到的信息对我来说太不清楚了。我遇到的问题是我必须在Sybase中编辑这个6000行存储过程。毋庸置疑,这是一场彻头彻尾的噩梦,特别是对于那些最重要的人并不完全是SQL的人。

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

DECLARE @MY_VARIABLE INT

我熟悉的小SQL是SQL Server,Sybase感觉有点不同。你究竟如何为该变量设置一个值?在SQL Server I&#d; image中,它将是这样的:

SET @MY_VARIABLE = 1

但是我无法在程序中找到任何类似的地方。我确实找到了这个:

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

这是您在Sybase中设置变量的方法吗?与

SELECT @MY_VARIABLE = 2

例如?

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

SELECT @MY_VARIABLE

并确保它是程序中的最后一件事,但这似乎不起作用。它看起来非常类似于我感觉变量实际上得到设置而不是选择的方式。我真的很困惑,迷失在这里,感谢您提前获得任何帮助!

2 个答案:

答案 0 :(得分:2)

CREATE PROCEDURE RETURN_SELECT
AS BEGIN

    DECLARE @MY_VARIABLE int 
    SELECT @MY_VARIABLE = 2
    SELECT @MY_VARIABLE
END


EXEC RETURN_SELECT

输出如下:

@MY_VARIABLE
2

尽可能简单,不知道它是否有用,或者你想要更多东西?

答案 1 :(得分:1)

确保您清楚是否要将变量选择为返回给客户端的结果集,或者是否使用OUTPUT参数变量做得更好,这在每周的答案中都是如此将是:

CREATE PROCEDURE RETURN_SELECT
    @MY_VARIABLE int OUTPUT
AS BEGIN

    SELECT @MY_VARIABLE = 2
END

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

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