我正在尝试在case语句中实现while循环和if条件(带函数调用)。基本上,我试图这样做:
begin
case
when (condition1 and condition 2 and ncolumn_num between 6 and 9)
then
while @i < 10
begin
if(hsip.Is_numeric( hsip.getTempResponseById(@cregion, @cState_code, @nFY, @nReport_id, @nsection_id, @nquestion_number, @ndisplay_number, @nquestion_number, @nquestion_part_number, @suser_id, @nrow_number, i, @suser_id)))
@nrunningtotal = @nrunningtotal + hsip.getTempResponseById(@cRegion, @cState_code, @nFY, @nReport_id, @nsection_id, @nquestion_number, @ndisplay_number, @nquestion_number,
@nquestion_part_number, @suser_id, @nrow_number, @ncolumn_number, @suser_id)
end if
end
我可以在case语句中实现while循环和if条件。我的业务逻辑要求我将列数从6增加到9,最终总数为col:10。
我有两个函数:gettempresponsebyid
:返回响应字符串和isnumeric
函数,它转换为数字。
有人可以建议一个更好的方法。我收到这个错误:
如果语法不正确并且语法不正确,则会出现错误。
答案 0 :(得分:3)
问:我可以在case语句中实现while循环和条件。
答:不。CASE
不是T-SQL 声明。这是表达式。
https://msdn.microsoft.com/en-us/library/ms181765.aspx
在发布的代码中,一个很大的语法问题就在这里开始:
BEGIN CASE ...
^
使用IF / ELSE
语句有条件地控制T-SQL中的流。
https://msdn.microsoft.com/en-us/library/ms182717.aspx
首先,使用CASE
语句替换IF
表达式的无效用法。
BEGIN
IF (condition1 AND condition2 AND ncolumn_num between 6 and 9)
BEGIN
...
END;
END IF;
END;
但即使有了这种改变,仍然不清楚你想要实现的目标或者你想要解决的问题。可能有更好的方法来做你想做的事情,但我们只是猜测你想要做什么。