当前位置: 代码迷 >> Informix >> infromix存储过程的有关问题。
  详细解决方案

infromix存储过程的有关问题。

热度:2378   发布时间:2013-02-26 00:00:00.0
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;




  相关解决方案