软件开发数据库

DB2存储过程使用序列报错

在存储过程里想取某个序列的下个值,存储过程编译报错,举个最简单的例子如下:CREATE SEQUENCE SAMPSEQUENCEAS BIGINTSTART WITH 1INCREMENT BY 1MAXVALUE 9223372036854775807MINVALUE 1NO CYCLENO ORDERCACHE 20;CREATE OR REPLACE PROCEDURE test (OUT recid INT)BEGIN &n...显示全部

在存储过程里想取某个序列的下个值,存储过程编译报错,举个最简单的例子如下:

CREATE SEQUENCE SAMPSEQUENCE

AS BIGINT

START WITH 1

INCREMENT BY 1

MAXVALUE 9223372036854775807

MINVALUE 1

NO CYCLE

NO ORDER

CACHE 20;

CREATE OR REPLACE PROCEDURE test (OUT recid INT)

BEGIN

  SET recid=nextval FOR SAMPSEQUENCE;

END;

先建一个测试序列,然后建一个测试存储过程,编译,报错。

SQL0104N  在 "BEGIN-OF-STATEMENT" 后面找到异常标记 "CREATE OR REPLACE PROCEDURE TES"。预期标记可能包括:""。  LINE NUMBER=6.  SQLSTATE=42601

序列是存在的,不管用values inot,还是set=(select..from..),都一样报错,db2版本是V10.5,平台是AIX,自己本机win7装了express也不能执行上面的测试语句,上面那段发给其他人可以执行无误,求解决方案。

收起
参与10

查看其它 3 个回答liaogzhu的回答

liaogzhuliaogzhu数据库开发工程师PCI

SQL0104N  在 "l FOR SAMPSEQUENCE; " 后面找到异常标记 "END"。预期标记可能包括:"END"。  LINE NUMBER=3.  SQLSTATE=42601

去掉OR REPLACE的报错

软件开发 · 2016-05-27
浏览1847

回答者

liaogzhu
数据库开发工程师PCI

liaogzhu 最近回答过的问题

回答状态

  • 发布时间:2016-05-27
  • 关注会员:3 人
  • 回答浏览:1847
  • X社区推广