infromix存储过程的问题。。。急!!!
在创建informix存储过程中有像DB2存储过程中的
LANGUAGE SQL
NOT DETERMINISTIC
CALLED ON NULL INPUT
EXTERNAL ACTION
OLD SAVEPOINT LEVEL
MODIFIES SQL DATA
INHERIT SPECIAL REGISTERS
这些属性设置吗?我在网上找了好多informix的存储过程的例子。里面都没有这些东西。
可是我现在要把db2存储过程转化成informix的存储过程。db2存储工程中的这些属性,
在informix中我要怎么写呢?
[解决办法]
那informix中的存储过程怎么写,用Informix好几年了,还从来没有写过存储过程呢。
[解决办法]
示例:
CREATE PROCEDURE getxml1levnode(arg1 CHAR(255), arg2 CHAR(255), arg3 CHAR(255),
arg4 CHAR(255), szNodeName CHAR(128))
RETURNING CHAR(255);
DEFINE in_szStr CHAR(1024);
DEFINE szRetMsg CHAR(255);
DEFINE szStartNode CHAR(255);
DEFINE szEndNode CHAR(255);
DEFINE lLen INT;
DEFINE lNodeName INT;
DEFINE i INT;
DEFINE lStartNode INT;
DEFINE lEndNode INT;
DEFINE lStart INT;
DEFINE lEnd INT;
DEFINE lFlag INT;
LET in_szStr=arg1 || arg2 || arg3 || arg4;
LET lLEN=LENGTH(in_szStr);
LET lNodeName=LENGTH(szNodeName);
LET szStartNode='<' || TRIM(szNodeName) || '>';
LET lStartNode=lNodeName + 2;
LET szEndNode='</' || TRIM(szNodeName) || '>';
LET lEndNode=lNodeName + 3;
LET szRetMsg='';
LET i=1;
LET lStart=0;
LET lEnd=0;
LET lFlag=0;
WHILE (i<=lLen-lStartNode)
IF (lFlag=0) THEN
LET szRetMsg=SUBSTR(in_szStr, i, lStartNode);
IF (szRetMsg=szStartNode) THEN
LET lFlag=1;
LET lStart=i + lStartNode;
Let i=i + lStartNode;
END IF
END IF
IF (lFlag=1) THEN
LET szRetMsg=SUBSTR(in_szStr, i, lEndNode);
IF (szRetMsg=szEndNode) THEN
LET lFlag=2;
LET lEnd=i - lStart;
EXIT WHILE;
END IF
END IF
LET i=i + 1;
END WHILE
IF (lFlag=2) THEN
LET szRetMsg=SUBSTR(in_szStr, lStart, lEnd);
ELSE
LET szRetMsg='';
END IF
RETURN szRetMsg;
END PROCEDURE;