`

Oracle 手札

阅读更多

PL/SQL debug调试赋权:

ORA-0131:Insufficient privileges.

Note:Debugging requires the DEBUG CONNECT SESSION system privileges.

后经查找,是缺失  DEBUG CONNECT SESSION 系统权限所致。

解决办法:以SYS用户登录数据库,执行赋权操作:

grant  DEBUG CONNECT SESSION to user_name;
 

附1:有网友指出还需赋予DEBUG ANY PROCEDURE的权限,经测试,该权限可不用赋予!

附2:可以从数据字典role_sys_privs表查看该权限相关信息:

 

conn / as sysdba;
select * from role_sys_privs where privilege like 'DEBUG%' order by 2;

 (源地址:http://www.oracleonlinux.cn/2012/02/debug-procedures/)

 

动态SQL:

动态sql拼装的时候,表名一定要有不能传参的形式赋值;

 

--动态sql必须要有表名
    --v_sql_statement := 'select min(file_sn) INTO v_min_file_sn from :1 where substr(src_file, :2, :3) = :4';
    v_sql_statement := 'select min(file_sn)  from '||dec_table_name.table_name||' where substr(src_file, :1, :2) = :3';
    EXECUTE IMMEDIATE v_sql_statement INTO v_min_file_sn
    USING v_date_index,v_date_length,v_date_str;
 

NVL函数:

nvl()函数从两个表达式返回一个非空的值;

nvl(param1,param2);如果param1的计算结果为null,则返回param2;如果param的计算结果不为null,则返回param1;如果param1、param2都为null,则返回null(注:param1、param2可以为任何类型,但两个类型必须一致)。

 

 

select nvl(null,'a') from dual; --返回 a
select nvl('a',null) from dual; --返回 a
select nvl('a','ab') from dual; --返回 a,第一个
select nvl('ab','a') from dual; --返回 ab,第一个
select nvl(null,null) from dual; --返回 null 
select nvl(1,'a') from dual; --ora-01722 无效数字

创建用户、角色、赋权:

oracle为了兼容以前的版本,提供了三种标准的角色(role):connect、resource和dba。

  1. connect role(连接角色)

  临时用户,特别是那些不需要建表的用户,通常只赋予他们connect role。connect是使用oracle的简单权限,这种权
限只有在对其他用户的表有访问权时,包括select、insert、update和delete等,才会变得有意义。拥有connect role的
用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym )、会话(session)和与其他数据库的链
(link)。

  2. resource role(资源角色)

  更可靠和正式的数据库用户可以授予resource role。resource提供给用户另外的权限以创建他们自己的表、序列、过
程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。

  3. dba role(数据库管理员角色)

  dba role拥有所有的系统权限----包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有。
下面介绍一些dba经常使用的典型权限。

 

/* 创建用户:*/
create user user_name identified by user_password;
/* 创建角色:*/
create role role_name;--(角色名不能和用户名相同)
/* 为角色赋权限 */
grant create public database link to role_name;
/* 为用户赋某个角色 */
grant role_name to user_name;

N

oracle取整函数和随机函数

-- Oracle取整的函数
--1.向上取整 (大)  value:2
select ceil(1.001) value from dual;
--2.向下取整 小) value:1
select floor(1.001) value from dual;
--3.取整(截取小数点前的部分) value:1
select trunc(1.002) value from dual;
--4.舍入取整(四舍五入) value:1
select round(1.001) value from dual;
 

/*Oracle随机函数
VALUE 函数的第一种形式返回一个大于或等于 0 且小于 1 的随机数;
第二种形式返回一个大于或等于 LOW ,小于 HIGH 的随机数。*/

select dbms_random.value,dbms_random.value(55,100) from dual;
select trunc(dbms_random.value(1,9999999)) from dual
 

VL函数:

nvl()函数从两个表达式返回一个非空的值;

nvl(param1,param2);如果param1的计算结果为null,则返回param2;如果param的计算结果不为null,则返回param1;如果param1、param2都为null,则返回null(注:param1、param2可以为任何类型,但两个类型必须一致)。

NVL函数:

nvl()函数从两个表达式返回一个非空的值;

nvl(param1,param2);如果param1的计算结果为null,则返回param2;如果param的计算结果不为null,则返回param1;如果param1、param2都为null,则返回null(注:param1、param2可以为任何类型,但两个类型必须一致)。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics