如何在 Sybase 存储过程中设置和 return 变量
How to set and return a variable in a Sybase stored procedure
我试图阅读有关 Sybase 的资料,但我得到的信息对我来说太不清楚了。我遇到的问题是我必须在 Sybase 中编辑这个 6000 行的存储过程。毋庸置疑,这完全是一场噩梦,尤其是对于那些最强项并不完全 SQL.
的人来说
在过程的顶部有一个变量声明(只是为了这个问题使用较短的变量名):
DECLARE @MY_VARIABLE INT
我熟悉的小SQL是SQL服务器,Sybase感觉有点不一样。您究竟如何为该变量设置值?在 SQL 服务器中,我想象它会是这样的:
SET @MY_VARIABLE = 1
但是我在程序中找不到任何地方会发生这样的事情。不过我确实找到了这个:
SELECT @MY_VARIABLE = convert(integer, Member_Number)
FROM ELECTRONIC_FORM NOHOLDLOCK
这就是你在 Sybase 中设置变量的方式吗?有
SELECT @MY_VARIABLE = 2
例如?
除此之外,我如何 return 程序结束时的变量值?我会想象它是这样的:
SELECT @MY_VARIABLE
并确保它是程序中的最后一件事,但这似乎不起作用。它看起来与我感觉变量实际上得到 set 而不是 selected 的方式非常相似。我真的很困惑,迷路了,在此先感谢您的帮助!
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 参数变量,这在周末的回答中是:
CREATE PROCEDURE RETURN_SELECT
@MY_VARIABLE int OUTPUT
AS BEGIN
SELECT @MY_VARIABLE = 2
END
这可能会增加混乱,我希望不会。我不知道您是如何获得结果的,但这可能很重要 - 一种方法可能比另一种方法更容易、更好。
这是与上述 SET/SELECT 讨论不同的问题。此外,当您 SELECT 将结果集返回给客户端时,您可以在 SP 中的任何位置执行此操作,甚至可以 select 返回多个结果集!
我试图阅读有关 Sybase 的资料,但我得到的信息对我来说太不清楚了。我遇到的问题是我必须在 Sybase 中编辑这个 6000 行的存储过程。毋庸置疑,这完全是一场噩梦,尤其是对于那些最强项并不完全 SQL.
的人来说在过程的顶部有一个变量声明(只是为了这个问题使用较短的变量名):
DECLARE @MY_VARIABLE INT
我熟悉的小SQL是SQL服务器,Sybase感觉有点不一样。您究竟如何为该变量设置值?在 SQL 服务器中,我想象它会是这样的:
SET @MY_VARIABLE = 1
但是我在程序中找不到任何地方会发生这样的事情。不过我确实找到了这个:
SELECT @MY_VARIABLE = convert(integer, Member_Number)
FROM ELECTRONIC_FORM NOHOLDLOCK
这就是你在 Sybase 中设置变量的方式吗?有
SELECT @MY_VARIABLE = 2
例如?
除此之外,我如何 return 程序结束时的变量值?我会想象它是这样的:
SELECT @MY_VARIABLE
并确保它是程序中的最后一件事,但这似乎不起作用。它看起来与我感觉变量实际上得到 set 而不是 selected 的方式非常相似。我真的很困惑,迷路了,在此先感谢您的帮助!
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 参数变量,这在周末的回答中是:
CREATE PROCEDURE RETURN_SELECT
@MY_VARIABLE int OUTPUT
AS BEGIN
SELECT @MY_VARIABLE = 2
END
这可能会增加混乱,我希望不会。我不知道您是如何获得结果的,但这可能很重要 - 一种方法可能比另一种方法更容易、更好。
这是与上述 SET/SELECT 讨论不同的问题。此外,当您 SELECT 将结果集返回给客户端时,您可以在 SP 中的任何位置执行此操作,甚至可以 select 返回多个结果集!