我试着阅读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中的任何位置执行此操作,甚至可以选择多个结果集!