Oracle
新建了
一个
存储过程
,里面包含CREATE和DROP,逐条依据可以执行,但是执行整个
存储过程
报
权限
不足的错误。
在网上看到,
Oracle
规定,在默认的情况下,在调用
存储过程
用户
的角色不起作用,即在执行
存储过程
时只有Public
权限
。所以在调用Create table时,会有
权限
不足的提示。所以需要给当前
存储过程
制定角色,指定AUTHID 属性,
create or replace PROCEDURE
存储过程
名称
Authid Current_User
BEGIN
存储过程
能够正常执行了!
--
存储过程
案例(清空表数据)
CREATE OR REPLACE PACKAGE USER_A.PKG_TRA_TAB_OPERATION IS
PROCEDURE P_TAB_TRUNCATE_A; -- 方法一
PROCEDURE P_TAB_TRUNCATE_B; -- 方法二
END PKG_TRA_TAB_OPERATION;
CREATE OR REPLACE PACKAGE
将
oracle
数据库dzjc
用户
的dzjc_pack_xzxk_exchange
存储过程
使用
权限
赋给bjsp_tysp
用户
。
需要登录到dzjc上,然后执行一下语句:
grant all on dzjc_pack_xzxk_exchange to bjsp_tysp;
这样就可以在bjsp_tysp中使用dzjc的dzjc_pack_xzxk_exchange
存储过程
了。
Oracle
存储过程
执行
权限
默认情况下,在调用
存储过程
用户
的角色是不起作用的,即在执行
存储过程
时只有Public
权限
。所以如果被调用的
存储过程
中如果有executeimmediate 'create table..'语句,将会引发ORA-01031:insufficient privileges错误。
存储过程
分为两种,即DR(Definer'sRights ) Procedur...
2. 在Mybatis的Mapper XML文件中定义
一个
<select>标签,指定调用
存储过程
的语句。
3. 在<select>标签中使用<parameterMap>标签定义输入参数和输出参数。
4. 在Java代码中调用Mapper接口的方法,传入输入参数,并获取输出参数。
5. 执行Mybatis的SQL语句,调用
Oracle
存储过程
,并将输入参数和输出参数传递给
存储过程
。
6. 获取
存储过程
的执行结果,并将结果返回给Java代码。
需要注意的是,在调用
存储过程
时,需要使用Mybatis的动态SQL语法来拼接SQL语句,以便正确地传递输入参数和输出参数。同时,还需要在
Oracle
数据库中授权给Mybatis
用户
执行
存储过程
的
权限
。
人大金仓数据库SQL 错误 [42601]: 错误: 语法错误 在 “=“ 或附近的, com.kingbase8.util.KSQLException: 错误: 语法错误 在 “=“ 或附近的
18590