解决方案 »
- 请教关于日志问题导致数据库无法打开
- plsql deveploer软件奇怪问题
- oracle 11gR2 数据文件头及数据begin_block
- oracle 11g 12514错误,请各位指点一下!
- 求RMAN高手帮忙看看,小弟我实在是晕的不行啊!
- SYSTEM用户怎样commit普通用户的数据?
- 关于ORACLE中SQL语句的总是
- 求SQL
- 初学者!请问在Oracle中能不能在一个字段中存放整型数组?
- oracle case when 满足多个条件后可以对字段进行格式转换吗??
- 虚拟环境中plsql developer没法登录oracle数据库
- ORACLE中 用union 替换 left join问题,都帮忙看看...
i_EmployeeId IN T_EMPLOYEE.EmployeeId%TYPE, --雇员ID
i_EmployeName IN T_EMPLOYEE.Employeename%TYPE, --雇员姓名
i_DeptId IN T_EMPLOYEE.DeptId%TYPE, --雇员所在部门
i_CurrUserId IN EBS_USER.USERID%TYPE, --操作员
o_cursor OUT SYS_REFCURSOR, --指针
o_RetCode OUT VARCHAR2, --返回编码
o_RetMsg OUT varchar2 --返回值
)IS
v_updatedate DATE; --操作日期
V_sql varchar2(4000);
BEGIN
V_sql :='INSERT INTO T_EMPLOYEE(
EMPLOYEEID,
EMPLOYEENAME,
DEPTID,
OPERATOR,
UPDATEDATE
)
VALUES(
i_EmployeeId,
i_EmployeName,
i_DeptId,
i_CurrUserId,
v_updatedate
)';
open o_cursor for V_sql;
END sp_add_employee_info;
已知不用游标时,可以正常操作,网上搜的说是超过最大量,需要在java代码中用command.close()方法,但是我现在存储过程中,该怎么解决呢?要求:不改变游标的上限,不改变表的原来容量
试了下,即使在
open o_cursor for V_sql;
后加
close o_cursor
还是不行,问了项目经理,他说只有select语句可以,这个insert语句不可以
第二:这insert拼接有问题这i_xxx全部存的不是你的参数值,而是i_xxx;
如果要执行的话用execute immediate;
ORA-01003: 语句未进行语法分析‘。
以下代码供参考:create or replace procedure ap3 is
type cType is ref cursor;
c1 cType;
vName varchar2(10);
vSql varchar2(4000);
vTable varchar2(10);
begin
vTable := 'a02';
vSql := 'select t from ';
vSql := vSql || vTable;
open c1 for vSql;
loop
fetch c1
into vName;
exit when c1%notfound;
dbms_output.put_line(vName);
end loop;
end ap3;
SQL> exec ap3;
wwwww
1
2
PL/SQL procedure successfully completed
参数不是应该用 || 来连接吗?
V_sql :='INSERT INTO T_EMPLOYEE(
EMPLOYEEID,
EMPLOYEENAME,
DEPTID,
OPERATOR,
UPDATEDATE
)
VALUES( ‘||
i_EmployeeId ||...