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必须要有表名 --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(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;
-- 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
nvl()函数从两个表达式返回一个非空的值;
nvl(param1,param2);如果param1的计算结果为null,则返回param2;如果param的计算结果不为null,则返回param1;如果param1、param2都为null,则返回null(注:param1、param2可以为任何类型,但两个类型必须一致)。
nvl()函数从两个表达式返回一个非空的值;
nvl(param1,param2);如果param1的计算结果为null,则返回param2;如果param的计算结果不为null,则返回param1;如果param1、param2都为null,则返回null(注:param1、param2可以为任何类型,但两个类型必须一致)。