当前位置: 代码迷 >> DB2 >> DB2函数中实现像一张表插入数据,该如何解决
  详细解决方案

DB2函数中实现像一张表插入数据,该如何解决

热度:4606   发布时间:2013-02-26 00:00:00.0
DB2函数中实现像一张表插入数据
CREATE FUNCTION F1
(IN_ID INTEGER)
RETURN INTEGER
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN AUTOMIC

INSERT INTO FUN1 VALUES(IN_ID,CURRENT TIMESTAMP);

RETURN IN_ID;
END;

表结构
CREATE TABLE FUN1
(
ID INTEGER,
CTIME TIMESTAMP);

很简单的函数,报错
SQL0628N 存在涉及“MODIFIES SQL DATA”子句的多个关键字或有冲突的关键字。
如果返回一个table就不会报错。但是功能不对。
这个可以解决吗。

------解决方案--------------------------------------------------------
SQL code
C:\Documents and Settings\db2admin>db2 connect to test_01   数据库连接信息 数据库服务器         = DB2/NT 9.1.0 SQL 授权标识         = DB2ADMIN 本地数据库别名       = TEST_01C:\Documents and Settings\db2admin>db2 -tvf "C:\Documents and Settings\db2admin\桌面\q1.txt"CREATE TABLE FUN1 ( ID INTEGER, CTIME TIMESTAMP)DB20000I  SQL命令成功完成。C:\Documents and Settings\db2admin>db2 -td@ -vf "C:\Documents and Settings\db2admin\桌面\q2.txt"CREATE FUNCTION F1(IN_ID INTEGER)     RETURNS TABLE (ID INTEGER,                    CTIME TIMESTAMP)     LANGUAGE SQL     MODIFIES SQL DATA     NO EXTERNAL ACTION     DETERMINISTIC     BEGIN ATOMICINSERT INTO FUN1 VALUES(IN_ID,CURRENT TIMESTAMP);return select * from FUN1 where ID = IN_ID;ENDDB20000I  SQL命令成功完成。C:\Documents and Settings\db2admin>
  相关解决方案