ITPub博客

首页 > IT职业 > IT生活 > 学习笔记 过程、同义词、序列

学习笔记 过程、同义词、序列

原创 IT生活 作者:wmlm 时间:2007-05-25 14:07:24 0 删除 编辑
过程的调用,同义词的有效性,降序列默认最大值[@more@]


存储过程的执行方法:(包括函数)
在sql*plus中使用EXEC 过程名
SQL> exec dbms_stats.gather_table_stats(ownname=>'SG',tabname=>'EMPLOYEES',cascade=>true,degree=>4);

函数直接调用
Functions are called anywhere an expression is valid:
==》 In an assignment:
order_volume := open_orders(SYSDATE, 30);

==》 In a Boolean expression:
IF (open_orders(SYSDATE, 30) < 500 )
THEN …

==》 In a default value assignment:
DECLARE
order_volume NUMBER
DEFAULT open_orders(SYSDATE, 30);
BEGIN …

==》 In a SQL statement:
SELECT vendor_name
FROM vendors
WHERE open_orders(SYSDATE, 30, vendor_id) = 0;
==》 In the parameter list of another program:
process_vendor(vendor_id,open_orders(vendor=>vendor_id));

参数传入的两种方式:以位置标记和以参数名标记
上面是以参数名为标记的例子,下面是以位置标记的例子
SQL> exec dbms_utility.analyze_schema('SG','ESTIMATE',null,10);

关于数据包上的可执行权限的说明
When you grant the
EXECUTE privilege on a package, it is for all programs and data structures in
the package specification. You cannot grant privileges on only one procedure
or function within a package.

在数据包中函数或者过程可以重载overload
示例如下:
create or replace package pk_test is
-- Public function and procedure declarations
function f_tt(p_msg varchar2) return varchar2;
function f_tt(p_code number) return number;
end pk_test;

关于同义词的引用
1 只要它人C有基表(A.tab_name)的选择权,那么B的同义词a_tab(A.tab_name)不需要赋权给C,C也能访问a_tab;
USER A:
GRANT SELECT ON TAB TO B;
GRANT SELECT ON TAB TO C;

USER B:
CREATE SYNONYM A_TAB FOR A.TAB;

USER C:
SELECT * FROM B.A_TAB;

2 如果C没有基表的选择权,那么要通过B赋权给C,C才能访问这个同义词。过程如下:
USER A:
GRANT SELECT ON TAB TO B WITH GRANT OPTION;

USER B:
CREATE SYNONYM A_TAB FOR A.TAB;
GRANT SELECT ON A_TAB TO C;

USER C:
SELECT * FROM B.A_TAB;

3 同义词没有失效的概念,它可以引用一个不存在的对象。

关于降序序列
降序序列的默认最大值为-1,如果创建一个最大值为0的降序序列,除了要指出start with 和 increment by 外,还需要指出maxvalue

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/271063/viewspace-916221/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 学习笔记 视图
请登录后发表评论 登录
全部评论

注册时间:2008-04-08

  • 博文量
    398
  • 访问量
    3716795