DB2 V9.5版本中数据库应用程序移植的改进
2008-09-03 16:28:24 来源:WEB开发网GRANT READ, WRITE ON VARIABLE myjob_current TO USER praveen, USER sanjay;
REVOKE WRITE ON VARIABLE myjob_current FROM USER sanjay;
获取用户 praveen 和 sanjay 的全局变量权限信息:
select substr (varschema, 1, 10) AS schema,
substr (varname, 1, 10) AS name,
substr(grantor,1,10) AS grantor, grantortype AS Rtype,
substr(grantee,1,10) AS grantee, granteetype AS Etype,
readauth, writeauth
FROM syscat.variableauth
where varname =’MYJOB_CURRENT’; ]
在触发器中使用全局变量,本例是设计一个disable触发器示例:
create VARIABLE disable_trigger char (1) DEFAULT (’N’);
create TRIGGER validate_t BEFORE insert ON EMPLOYEE
REFERENCING NEW AS n FOR EACH ROW
WHEN (disable_trigger = ’N’ AND n.empno > ’10000’)
SIGNAL SQLSTATE ’38000’
SET message_text = ’EMPLOYEE NUMBER TOO BIG and INVALID’;
SET disable_trigger = ’Y’; 使触发器失效
简化用户权限检索:
create VARIABLE schema1.gv_workdept char
DEFAULT ((select workdept FROM employee
where firstnme = SESSION_USER));
create VIEW schema1.emp_filtered AS
select * FROM employee
where workdept = schema1.gv_workdept;
在存储过程,嵌入C,java程序中都可使用全局变量。
新的函数
新的函数简化了应用程序移植,版本 9.5 包含一些与其他数据库供应商使用的标量函数同名的新标量函数。当您将现有应用程序移植到版本 9.5 中时,您可以继续使用其他供应商使用的函数名称,而无需更改代码。
提供了以下新的标量函数:
NVL(现有的 COALESCE 和 VALUE 函数的同义词)
LEAST 或 MIN(互为同义词)
GREATEST 或 MAX(互为同义词)
DECODE(类似于现有的 CASE 表达式)
更多精彩
赞助商链接