SQL> create or replace procedure test_pro(t_table varchar2) is
2 v_sql varchar2(1000);
3 v_name varchar2(10);
4 begin
5 v_sql:=' select ename into v_name from' ||t_table||' where empno = 7788 ';
6 execute immediate v_sql;
7 exception
8 when others then
9 null;
10 dbms_output.put_line('姓名'||v_name);
11 end ;
12 /
Procedure created
SQL> exec test_pro('emp');
姓名
PL/SQL procedure successfully completed
SQL> select * from emp where empno= 7788 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20
--
2 v_sql varchar2(1000);
3 v_name varchar2(10);
4 begin
5 v_sql:=' select ename into v_name from' ||t_table||' where empno = 7788 ';
6 execute immediate v_sql;
7 exception
8 when others then
9 null;
10 dbms_output.put_line('姓名'||v_name);
11 end ;
12 /
Procedure created
SQL> exec test_pro('emp');
姓名
PL/SQL procedure successfully completed
SQL> select * from emp where empno= 7788 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20
--
解决方案 »
- oracle 动态表 数据插入
- 求一个SQL语句
- 数据库检索性能问题(大量数据)
- 如何分批插入数据(利用plsql集合变量)
- OracleOraHome81ManagementServer虽然设为自动但是每次都不启动,要手动启动,这是正常的吗?
- 为什么在一个触发器后面不能有代码,否则说触发器编译有错误,该怎么解决?
- 只有数据文件,如何恢复Oracle数据库中的数据?急,在线等
- 如何登陆ORACLE Enterprise Manager(在线等待)
- 大表,多表关联使用临时表哪种效率高?
- 欢迎四海八荒的上神来帮忙
- 求指点:VMware中xp3死活装不上Oracle 10g
- 写了个过程 老是提示错误
' select ename into v_name from' ||t_table||' where empno = 7788 '
要改成
' select ename from' ||t_table||' where empno = 7788 into v_name '不用动态SQL可以直接执行
select ename into v_name from t_table where empno = 7788 ;
2 v_sql varchar2(1000);
3 v_name varchar2(10);
4 begin
5 v_sql:=' select ename from ' ||t_table||' where empno = 7788 ';
6 execute immediate v_sql into v_name;
7 dbms_output.put_line('姓名'||v_name);
8 exception
9 when others then
10 null;
11 end ;
12 /
Procedure created
SQL> set serveroutput on
SQL> exec test_pro('emp');
姓名SCOTT
PL/SQL procedure successfully completed
SQL>
你的写法有问题 你用了异常 所以没报错SQL> create or replace procedure test_pro(t_table varchar2) is
2 v_sql varchar2(1000);
3 v_name varchar2(10);
4 begin
5 v_sql:=' select ename from' ||t_table||' where empno = 7788 ';
6 execute immediate v_sql into v_name;
dbms_output.put_line('姓名'||v_name);
7 exception
8 when others then
9 null;
11 end ;
12 /