Oracle存储过程中如何把表名写在变量里面进行查询该表?

我的表名是动态的,每天生成一个表,我想把存储过程里面的表名写成变量进行查询,但是报错表或试图不存在,不知道是什么样的形式能够实现,请大虾帮帮忙啊,解决后给200分都不是问题!谢谢
50分留给追加

第1个回答  推荐于2018-03-10
大概这样
create or replace procedure p_XX(tabName in varchar2) is
type t_cursor is ref cursor;
v_cursor t_cursor;
v_SQLStatement varchar2(300);

begin
v_SQLStatement = 'select xx from '||tabName ;
open v_cursor for v_SQLStatement;
loop fetch v_cursor into XXX;
exit when v_cursor%notfound;
--做你的操作
end loop; close v_cursor;
end;本回答被网友采纳
第2个回答  2018-11-26
在Oracle 11G中,应修改为:
CREATE OR REPLACE
PROCEDURE P_XX(TABNAME IN VARCHAR2)
IS
TYPE T_CURSOR IS REF CURSOR;
V_CURSOR T_CURSOR;
V_SQLSTATEMENT VARCHAR2(256);
VALUE VARCHAR2(256);
BEGIN
V_SQLSTATEMENT := 'SELECT DUMMY FROM '||TABNAME ;
OPEN V_CURSOR FOR V_SQLSTATEMENT;
LOOP FETCH V_CURSOR INTO VALUE;
EXIT WHEN V_CURSOR%NOTFOUND;
--做你的操作
DBMS_OUTPUT.PUT_LINE('MY FIRST PROCEDURE, CREATE AT 2018-11-25 19:24.');
DBMS_OUTPUT.PUT_LINE(VALUE);
END LOOP;
CLOSE V_CURSOR;
END;
第3个回答  2012-06-07
动态sql应该可以满足,
把每天动态生成的表名给变量v_table。
最后执行 EXECUTE IMMEDIATE追问

动态sql是什么?

追答

比如
v_sql:='insert into tmp_table as select * from '||v_table;
EXECUTE IMMEDIATE v_sql;
这里的v_table这个变量就是不确定的表名

本回答被提问者采纳
第4个回答  2012-06-07
你要不说后面200分还行。一说一看就是假的。做人不能这么瞎许诺。看你就不是老实人。还不好好学。你说你以后怎么办?追问

你咋知道是假的?

第5个回答  2012-06-07
把你写的存储过程贴出来再看下咯。

Oracle存储过程中如何把表名写在变量里面进行查询该表?
大概这样 create or replace procedure p_XX(tabName in varchar2) is type t_cursor is ref cursor;v_cursor t_cursor;v_SQLStatement varchar2(300);begin v_SQLStatement = 'select xx from '||tabName ;open v_cursor for v_SQLStatement;loop fetch v_cursor into XXX;exit wh...

oracle查询表名为一个变量怎么写
用固定的语法结构写。简单来说,就是你一个存储过程当中创建了一个表table_a,然后要用insert into将其他的数据插入到这个table_a当中,但是因为你在创建过程的时候 table_a还不存在,过程就会显示有编译错误。因为table_a不存在必然导致过程无法执行,所以无法编译成功,而把insert into语句加如到execute...

oracle 存储过程输出参数咋样放在一个变量里面。 getspacename是一个存 ...
create or replace procedure getspacename (out_value out varchar2)as begin --添加你的代码...out_value:= 给该变量赋值;end;调用该存储过程:SQL> var c varchar2(10);SQL> exec getspacename(:c)希望对你有所帮助!

oracle存储过程中Insert表名(字段名)values(字段名)
insert into 表名 values后面括号里应该是值,而不是字段名;如果是从另外一个表里插入到当前表,应该是这样写:Insert Into TI_AIS_ADDRLINE (ADDR_ID --地址标识 ,DIST_CD --行政区划代码 ,POST_CD --邮政编码 ,POST_CD1 --邮政编码1 ,POST_CD2 --邮政编码2 ,ADDR_NAME ...

oracle的存储过程里面怎样引用表的名称?
在Oracle中这样写是不行的,在存储过程中所有查询返回的结果或结果集都必须有接受变量,如果你的存储过程是返回一个记录集,必须定一个ref的游标变量,使用open cursor for select。。。这样的格式才能返回数据集

oracle 的存储过程中 动态的创建一张表 然后插入一个变量到这个表中,表...
1、execute immediate ' insert into addtopinfo values('||sysdate||','||v_name||')'; v_name 既然是变量 怎么可能会用' '括号起来;就算是 直接执行 的话 也是 execute immediate ' insert into addtopinfo values(sysdate,v_name);2、如果有v_name的话 ,我建议你一般用拼sql的方式来...

oracle存储过程如何动态修改表名关联查询
VSQL varchar2(2000)day varchar2(2);begin day:= to_char(sysdate-1,'dd');VSQL:=' selectsum(sms.send_count) into sa_send_cnt from core_school sc inner join sms_mt_send sms on sc.school_id = sms.school_id inner join sms_mt_send_detail_'||day||' detail...

plsql怎样把存储过程中查询的表的值赋给变量
select count(*) into x from a 在ORACLE里面直接这么写就可以了。

oracle 存储过程 sql中in变量问题
select count(*) into v_count from t where type in(a);应该是有问题的.可以这样尝试一下:a varchar2(N);execute immediate 'select count(1) from t where type in('||a||')' into v_count ;还要注意传入的变量,引号别弄丢了...应该是可以的,我没有测试,很久没有动过这些了....

oracle动态表名查询 如何写sql语句或者存储过程实现: 根据某张表中的某...
begin for cur in(select id,flag fromu a)loop if cur.flag=0 then select * from b;...else select * from C;...end if;end loop;end;

相似回答