一个过程带参数,传过来的参数是查询表名的一部分,我不知道变量和字符串怎么接合
解决方案 »
- 将Oracle从10.2.0.1升级到10.2.0.3时运行补丁包中的runInstaller时出错
- case when then问题,急救~~
- 请问oracle中一个用户下最多能建多少张表、最多能建多少张视图?
- OCI的问题
- 谁知道在DMP文件中number型字段是如何存储的?
- 绑定Oracle数据库问题!高手指点!!
- 有哪位高手谁知道在pro*c中怎样把数据插入oracle中blob类型的字段中?
- 问一下超难的问题
- 请教一个触发器问题。触发器精通者入。
- 高分求救,PRO*C问题,欢迎斑竹等进来回答,抬人气也有分送
- 忘记oracle 9i密码
- oracle function 中的空值判断问题
declare
v_sql varchar2(200);
v_table_name varchar2(20) :='test';
begin
v_sql:='select * from '||v_table_name||'';
execute immediate v_sql;
dbms_output.put_line(v_sql);
end;
v_sql varchar2(200);
v_table_name varchar2(20) :='test';
begin
v_sql:='select * from '||v_table_name||'';
execute immediate v_sql;
dbms_output.put_line(v_sql);
end;
----------
1
2
3
4SQL> create or replace procedure test
2 (pi_tbname IN varchar2)
3 IS
4 c_tbname CONSTANT VARCHAR2(30) :='test_';
5 v_tbname VARCHAR2(30);
6 v_sqlstr VARCHAR2(100);
7 v_id test_2001.id%TYPE;
8 begin
9 v_tbname := c_tbname||pi_tbname;
10 v_sqlstr :='SELECT id from '||v_tbname||' where rownum=1';
11 EXECUTE IMMEDIATE v_sqlstr INTO v_id;
12 dbms_output.put_line(v_id);
13 end test;
14 /过程已创建。SQL> set serveroutput on
SQL> exec test('2001');
1
execute immediate v_sql;
动态sql执行用 execute immediate
如果是select,直接定义一个v_sql varchar2(1000);
然后open 游标 for v_sql即可