informix-procedure

/*****************************************************************************************/
informix procedure function
--1 有些操作在 函数中不能执行如:drop ,INSERT 等 ,所以需要 写成 procedure
--2 函数需要有返回值,返回值可以有多个
--3 存储过程也可以有返回值
--4 没有返回值得 存储 过程可以有 OUT 参数
--5 特殊字符
--5.1 单引号要用 '' 
      例如:let v_sql='   let NEW.DBVERSION = CASE WHEN TO_CHAR(NEW.DBVERSION, ''%Y-%m-%d'') = ''2012-01-01'' THEN NEW.DBVERSION ELSE SYSDATE END; ';
--5.2 不要使用双引号(会在导入导出时引起很大的 麻烦)
/*****************************************************************************************/
一 变量的作用范围 
1 全局变量(作用范围 :同一会话中)
CREATE FUNCTION func1() RETURNING INT;
DEFINE GLOBAL gvarINT DEFAULT 2;
LET gvar= gvar+ 1;
RETURN gvar;
END FUNCTION;
 
CREATE FUNCTION func2()RETURNING INT;
DEFINE GLOBAL gvarINT DEFAULT 5;
LET gvar= gvar+ 1;
RETURN gvar;
END FUNCTION;


--测试
--会话1
> EXECUTE FUNCTION func1();
           3
> EXECUTE FUNCTION func2();
           4
--会话2
> EXECUTE FUNCTION func2();
           6
> EXECUTE FUNCTION func1();
           7
 
2 在 PUBLIC.sysdbopen() 中设置,所有的会话有效


二 集合对象 
1 set 只能存放 不同的 值
2 multiset 可以存放相同的值
3 list 可以从某个 位置 INSERT
4 集合对象的 SELECT ,update,delete 需要 cursor 来操作


三 时间类型
1 在存储过程中DATTIME 的字段的取值 是一样 的,为了得到真正的 当前时间,使用下面的 方法.
select DBINFO('UTC_TO_DATETIME',sh_curtime) from sysmaster:sysshmvals)


四 字符串
1 lvarchar(32739) 长字符串 用于拼接各种字符串组合
2 同一个表的 长度不能超过 32767
  499: The operation causes a rowsize to exceed the allowable limit (32767).


五 exception
1 在变量定义前 定义
2 自主 raise 异常
3 发生异常 继续执行 END EXCEPTION WITH RESUME
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值