【问题标题】:SAP Sybase WHILE inside of FOR LOOPSAP Sybase WHILE 在 FOR LOOP 内
【发布时间】:2021-05-08 05:28:56
【问题描述】:

我正在尝试让它工作,但它不断出现

Could not execute statement.

Syntax error near 'BEGIN' on line 14
SQLCODE=-131, ODBC 3 State="42000"
Line 1, column 1
You can continue executing or stop.

代码如下:

IF VAREXISTS('@count') = 0  THEN CREATE VARIABLE @count  int; END IF;
IF VAREXISTS('@string') = 0  THEN CREATE VARIABLE @string char(50); END IF;
IF VAREXISTS('@found') = 0  THEN CREATE VARIABLE @found char(50); END IF;
IF VAREXISTS('@result') = 0  THEN CREATE VARIABLE @result char(50); END IF;
IF VAREXISTS('@fieldsToSearch') = 0  THEN CREATE VARIABLE @fieldsToSearch long varchar; END IF;

SET @count = 0;
SET @string = '';
SET @found = '';
SET @result = '';
SET @fieldsToSearch = '';

FOR LoopGetForeignChar AS CursGetForeignChar Dynamic Scroll CURSOR FOR ( -- Line 1
    SELECT
        row_value stringToSearch
    FROM
        sa_split_list(@fieldsToSearch) 
    WHERE
        A1 <> '' 
    ORDER BY A1
    )
DO
    SET @string = stringToSearch;

    WHILE @count <= Length(@string)
    BEGIN                                                                -- Line 14
        SET @found = (SELECT SUBSTR(@String, @count, 1) WHERE SUBSTR(@String, @count, 1) NOT REGEXP '[a-zA-Z0-9]*')
        SET @result = @result + (SELECT STRING(@found,'x') WHERE LOCATE(@result, @found) = 0 )
        SET @count = @count + 1
    END

END FOR;

我已检查,@fieldsToSearch 包含一个由逗号分隔的字母数字字符串列表。

工作逻辑:

  • 将字符串列表拆分为行
  • 检查每一行是否包含除“[a-zA-Z0-9]*”以外的任何其他字符
  • 如果有,检查该字符是否已经在@results 中,如果没有,添加它。

这是一个更大的 SQL 的一部分,直到现在为止。

【问题讨论】:

  • 这里为什么有mysql标签?
  • 如果这是 Sybase ... 在“Sybase”名称下有 4 种不同的 RDBMS 产品(ASE、IQ、SQLAnywhere、Advantage);这看起来像 SQLAnywhere(或者可能是 IQ);请确认然后更新标签以显示 SQLAnywhere(或 IQ);如果这是不是 Sybase ...仍然需要相应地更新标签
  • @markp-fuso 很抱歉。我现在已经修好了。感谢您指出这一点。

标签: sql sybase sqlanywhere


【解决方案1】:

原来 FOR 语句是 WATCOMSQL 而

WHILE something
BEGIN 
<do this>
END 

是 TRANSACTSQL。

解决方案: 使用 WHILE 语句的 WATCOMSQL 版本,即:

WHILE something LOOP
<do this>
END LOOP

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多