繁体   English   中英

获取LOCATE以返回到变量SQL DB2

[英]Getting LOCATE to return to variable SQL DB2

是否可以使用

 CREATE PROCEDURE TEST(IN QUERYSTRING VARCHAR(128))
 LANGUAGE SQL
 BEGIN
 DECLARE switch integer default 0;
 set switch = LOCATE('select', querystring,1);
 IF switch <> 0 then
 .......
 ELSE
 .......
 END IF;
 END@

查询字符串可以是“从testtag中选择count(*)”或“插入到testtab中”

任何想法,如果我可以做到这一点,以及如何将LOCATE返回值放入变量中?

Windows DB2 10.5

谢谢

这是一个示例,比较其在您的环境中的输出:

--#SET TERMINATOR @
set serveroutput on@
update command options using s on@

CREATE or replace PROCEDURE locateTEST(IN QUERYSTRING VARCHAR(128))
 LANGUAGE SQL
 specific locatetest
 BEGIN
     DECLARE switch integer default 0;
     set switch = LOCATE('select', querystring,1);
     IF switch <> 0 then
       call dbms_output.put_line('Switch: '||varchar(switch));
    ELSE
       call dbms_output.put_line('Switch: 0');
    END IF;
END@

call locatetest('    insert into fred(mycol) values(1)')@
call locatetest('    select count(*) from testtag')@

如果从Db2命令行执行(例如,在db2cmd.exe窗口的窗口上,并且已经存在到数据库的连接),则上面给出的输出如下:

set serveroutput on
DB20000I  The SET SERVEROUTPUT command completed successfully.

update command options using s on
DB20000I  The UPDATE COMMAND OPTIONS command completed successfully.

CREATE or replace PROCEDURE locateTEST(IN QUERYSTRING VARCHAR(128))
 LANGUAGE SQL
 specific locatetest
 BEGIN
     DECLARE switch integer default 0;
     set switch = LOCATE('select', querystring,1);
     IF switch <> 0 then
       call dbms_output.put_line('Switch: '||varchar(switch));
    ELSE
       call dbms_output.put_line('Switch: 0');
    END IF;
END
DB20000I  The SQL command completed successfully.

call locatetest('    insert into fred(mycol) values(1)')

  Return Status = 0

Switch: 0

call locatetest('    select count(*) from testtag')

  Return Status = 0

Switch: 5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM