比如说传入一个 record 该如何定义? 调用?
解决方案 »
- 数据是怎么写入的,oracle内部运行机制是何?小批量的数据commit,数据存在什么地方?
- 请教如何配置oracle客户端的tcps协议让他能够支持ssl链接?
- 请问下 如何把SELECT * FROM T_STUDENT 的结果集插入到COLB字段?
- 火急的问题!!??无法在表空间中扩展××在线等待!!!!
- 急!!!!!!!!!
- Report乱码问题
- ORACLE 取字段中的SQL语句执行问题
- 十里开源最新决策『十里开源__http://www.opensource.com.cn』
- 如何批量运行插入语句???
- 请问一套oracle 8i和9i正版软件需要多少钱啊?
- 如何将Aqua Data Studio完全卸载(包括注册表项)
- 探讨一个查询语句
哦, 我现在疑问的是: 如果我定义了一个 record
type emp_record is record (
ename emp.ename%type,
eno emp.empno%type
);
然后 我定义一个 存储过程create or replace procedure pro_add_emp(v_emp_rcd in out emp_record)is
begin
dbms_output.put_line(v_emp_rcd.ename);
end pro_add_emp;
编译的时候会报错, 必须声明标识符 emp_record请问我该如何解决这个问题呢????
--给你个例子,用package做的,其实是一样的Connected to:
Oracle Database 10g Release 10.1.0.2.0 - Production--创建包,包中有一个record的类型
SQL> create or replace package pag_record IS
2 --定义record类型
3 type emp_record is record (
4 ename emp.ename%type,
5 eno emp.empno%type
6 );
7 rs emp_record;--定义类型变量
8 end;
9 /Package created.--创建过程,入参为:pag_record.emp_record
SQL> create or replace procedure pro_add_emp(v_emp_rcd in pag_record.emp_record)
2 is
3 begin
4 dbms_output.put_line(v_emp_rcd.ename);
5 end pro_add_emp;
6 /Procedure created.SQL> set serveroutput on
--调用过程:
SQL> DECLARE
2 rs pag_record.emp_record;
3 BEGIN
4 SELECT ename,empno INTO rs FROM emp where ROWNUM=1;
5 pro_add_emp(rs);
6 END;
7 /
SMITHPL/SQL procedure successfully completed.SQL>
学习了, 请问一下 ,emp_record 如果不放在package中 是不是就没有办法实现了?还是可以有其他办法??
如果你存储过程入参要用到你定义的record,且此过程是单独创建的,那么必须用package包装record,然后再过程中用另外还有个方法就是,一个包里面定义一个record,并且此包中有自己定义的一个存储过程,也就是说,如我上面例子所示,可以将pro_add_emp此过程放到pag_record中
pro_add_emp(v_emp_rcd in pag_record.emp_record) ?呵呵 , 冒昧了,不知道你是不是搞java的
2 /
Type createdSQL> create or replace procedure pro_add_emp(v_emp_rcd in out emp_record)
2
3 is
4 begin
5 dbms_output.put_line(v_emp_rcd.ename);
6 end ;
7 /
Procedure created
SQL> declare
2 v_v emp_record;
3 begin
4 v_v:=emp_record('test',123);
5 pro_add_emp(v_v);
6 dbms_output.put_line(v_v.eno||':'||v_v.ename);
7 end;
8 /
test
123:test
PL/SQL procedure successfully completed
SQL>
前台程序怎么调用不清楚.