例如你指定寫入的表為t_table_column表,過程傳入?yún)?shù)為表用戶,表名

創(chuàng)新互聯(lián)是專業(yè)的溆浦網(wǎng)站建設(shè)公司,溆浦接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行溆浦網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
create or replace procedure p_check_table(owner in varchar2,
table_name in varchar2) as
v_owner varchar2(100) := null;
v_table varchar2(200) := null;
v_table_num number(10) := null;
v_column clob := null;
begin
v_owner := upper(owner);
v_table := upper(table_name);
select count(1)
into v_table_num
from all_tables t
where t.OWNER = v_owner
and t.TABLE_NAME = v_table;
if v_table_num = 0 then
dbms_output.put_line(v_owner || '.' || v_table || ':表不存在');
return;
end if;
v_column := null;
for i in (select t.COLUMN_NAME, t.COLUMN_ID
from all_tab_columns t
where t.OWNER = v_owner
and t.TABLE_NAME = v_table
order by COLUMN_ID) loop
v_column := v_column || ',' || i.column_name;
end loop;
insert into t_table_column
(owner, table_name, column_name)
values
(v_owner, v_table, v_column);
commit;
exception
when others then
rollback;
dbms_output.put_line(v_owner || '.' || v_table || '異常' || sqlerrm);
end p_check_table;
/
使用plsql存儲過程制造一個腳本如:
create or replace procedure test_val
(etl_date? ? varchar2, --時間或者數(shù)字變量
data? out sys_refcursor? ---存放數(shù)據(jù)
) as
s_sql varchar2(1000); --執(zhí)行sql
begin
s_sql := 'SELECT A,B FROM tsalpludetail' || etl_date ;
--dbms_output.put_line(s_sql);----打印sql可以不需要
open data for s_sql;? ?---把結(jié)果集放入data
end test_val;
執(zhí)行后,打開存儲過程
最后查看數(shù)據(jù)
至此完成
1、臨時表
WITH CTE AS (
SELECT T1.Sno,T1.Cno, T.Cname,T.Cpno,T.Ccredit,T.Grade
FROM Course T
INNER JOIN SC T1 ON T.Cno =T1.Cno
) SELECT * FROM
2、創(chuàng)建表
CREATE TABLE AA AS
SELECT T1.Sno,T1.Cno, T.Cname,T.Cpno,T.Ccredit,T.Grade
FROM Course T
INNER JOIN SC T1 ON T.Cno =T1.Cno
create?proc?selectName
as
begin
declare?@sql?varchar(100)
declare?@name?varchar(20)
select?@name?=?name?from?sysobjects?where?xtype='U'?and?id=373576369
print?@name?
set?@sql='select?*?from?'+?@name??--拼接
exec?(@sql)
end
exec?selectName?--執(zhí)行?
僅供參考!
動態(tài)SQL 實質(zhì)就是執(zhí)行的SQL字符串,所以你完全可以用拼接的方式,先把 字符串 拼接出來,然后用execute immediate 'sql' 來執(zhí)行;
至于如果拼接出來 SQL,那就需要你去找規(guī)律,其實你可以對字符串做對此拼接,例如一下:str1 :='SELECT QW,QE,QR FROM Q WHERE Q=1';
str2 :='SELECT QW,COUNT(1) FROM EW,' || str1 || 'WHERE EW=QW GROUP BY QW;'
這類問題 完全屬于個別案例,因為SQL的規(guī)律只有你自己最清楚,誰都無法提供一個完整的解決方案!
辦法是有的,就是特別麻煩,需要又重循環(huán),第一重,循環(huán)所有表,第二重,循環(huán)特定表中的字段,然后將所有滿足條件的表名和字段名插入到一張新的表中,然后再自己分析結(jié)果,確認(rèn)究竟是哪個表哪個字段, 僅提供思想而已,需要息寫一個procedure 或者function實現(xiàn)。
新聞名稱:oracle如何拼接表名,oracle 表名拼接
文章轉(zhuǎn)載:http://chinadenli.net/article39/dsedssh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站營銷、小程序開發(fā)、軟件開發(fā)、電子商務(wù)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)