TSQL变量和游标范围
我想在条件变量上创建一个游标,下面是一个简短的片段:TSQL变量和游标范围,tsql,cursor,sybase,Tsql,Cursor,Sybase,我想在条件变量上创建一个游标,下面是一个简短的片段: DECLARE @my_var VARCHAR(8) SET @my_var = (some value is obtained and set for @myvar) DECLARE my_cursor CURSOR FOR SELECT my_cols FROM my_table WHERE some_col < @my_var 这一点让我有点疑惑: IF(@retain_period
DECLARE
@my_var VARCHAR(8)
SET @my_var = (some value is obtained and set for @myvar)
DECLARE my_cursor CURSOR FOR
SELECT
my_cols
FROM
my_table
WHERE
some_col < @my_var
这一点让我有点疑惑:
IF(@retain_period > 0)
SET @retain_period = @retain_period * -1
认为可能需要
IF @retain_period>0 THEN
SET @retain_period=@retain_period *-1;
END IF
这可能会让事情变得混乱,并给你错误信息
编辑每天学习新知识:多行IF-THEN必须以两个单词结尾IF-in Sybase:
SET @retain_period =
(
SELECT
ABS(RETAIN_PERIOD) * -1
FROM
ARCHIVE_RETAIN_PERIOD
)
只是说。这不是在存储过程中吗?@DavidW,你好,David,这是在存储过程中。在这种情况下,我的第一个想法是,如果您收到错误消息,您可能会遇到一些简单的错误,例如导致Sybase提前终止解析进程的打印错误,例如认为“声明游标”不在进程中,但这是一个独立的查询。也许你能发布整个过程吗?@DavidW,你好,大卫我已经发布了我遇到问题的部分代码。谢谢。你确定你不需要一个IF(条件)然后在末尾构造一个END IF吗?我使用的是Sybase,它似乎不喜欢
THEN
和endif
Hmm…好了,FWIW,我从Sybase手册中得到/验证了IF-THEN和endif语法:)看看我答案的编辑,看看END-IF是否让它更快乐:)
SET @retain_period =
(
SELECT
ABS(RETAIN_PERIOD) * -1
FROM
ARCHIVE_RETAIN_PERIOD
)