Ⅰ oracle 存儲過程建表
這個過程就行了。。
create or replace procere wym
authid current_user
is
vn_ctn number(2);
begin
select count(*) into vn_ctn from user_all_tables a where a.table_name like upper('invbasdoc');
if vn_ctn > 0 then
execute immediate 'drop table invbasdoc';
end if;
execute immediate 'create table invbasdoc as select * from test_abcd';
end ;
原來的過程中:execute immediate 'drop table invbasdoc'; 當如果資料庫中不存在這張表的時候就會報錯的。。
上面是對資料庫中是否存在表進行了判斷,因此能夠避免「表不存在」這樣的錯誤。。
Ⅱ 怎樣用存儲過程創建表使用變數
可以這樣:
delcare @sqlstr varchar(8000)
declare @i int
while (@i>0)
begin
set @sqlstr = 'CREATE TABLE TABLE_'+cast(@I as varchar)+'(...)'
exec(@sqlstr)
set @i=@i-1
end
Ⅲ Sql 存儲過程創建表的問題!
把創建語句拼成字元串 存儲過程中用exec去執行創建
Ⅳ SQL server 存儲過程動態創建表 不知如何著手
既然是生成新表,你可以定義一個參加拼湊sql語句,游標抓出proName的值,作為表名,sql_str = 'create table '+表名+'(colname varchar(100))',然後游標抓出txtLog的值,作為表裡的值,這時候sql_str+='insert into 表名 values('+txtLog的值+')'
Ⅳ oracle如何用存儲過程建表
說的不明白
1.建什麼樣的表?
2.欄位是怎麼樣的變數?
3.表內的數據怎麼來?僅僅是一個表嗎?
參數是怎麼來的?輸入的參數還是按照日期來的?
變數名是怎麼來的?手動輸入的欄位名參數還是怎麼?
我看你就把你想做什麼說出來,你這樣沒法弄
----------------------------------------------------------------------
PROCEDURE SP_CREATE_new_table
(
on_flag OUT NUMBER,
out_reason OUT VARCHAR2
)
is
v_sql1 varchar2(2000);
v_a varchar2(1);
v_b varchar2(1);
v_c varchar2(1);
begin
select 'a' into v_a from al;
select 'b','c' into v_b,v_c from al;
v_sql1 :='create table '||v_a||'('||v_b||' varchar2(1),'||v_c||' varchar2(1))';
EXECUTE IMMEDIATE v_sql1;
commit;
EXCEPTION
WHEN OTHERS
THEN
on_flag := SQLCODE;
out_reason := SUBSTR (SQLERRM, 1, 255);
ROLLBACK;
END;
有什麼看不懂的就問吧
運行後,執行select * from a;
表名就叫a,欄位名叫b和c,都是按你說的
Ⅵ oracle存儲過程創建表
CREATE OR REPLACE PROCEDURE list_xs_name as
str_sql varchar2(2000);
begin
str_sql := 'create global temporary table xs_name (xh int,name varchar2(255),kc varchar2(255),fs int) on commit preserve rows';
execute immediate str_sql;
str_sql := 'select * from xs_name';
execute immediate str_sql;
dbms_output.put_line(str_sql);
END;
Ⅶ 基於這張表,怎樣用存儲過程創建表
TYPE_CODE
Ⅷ 存儲過程建表
create procere sj6601
begin
drop table sj6601; --應該是這樣吧
create table sj6601 as select * from bd_invbasdoc;
end
go
Ⅸ 【50分】如何寫創建表的存儲過程
create or replace procere P_test(
start_time in varchar2,
end_time in varchar2
)
as
begin
execute immediate 'CREATE TABLE OCT_T_COMMON_SYMPTOM AS SELECT DISTINCT B.* FROM T_EHR A INNER JOIN T_COMMON_SYMPTOM B
ON A.EHR_ID=B.EHR_ID WHERE EHR_DATE between '''||start_time||''' and '''||end_time||'''';
execute immediate 'CREATE TABLE OCT_T_COMMON_DIAGNOSIS AS SELECT DISTINCT B.* FROM T_EHR A INNER JOIN T_COMMON_DIAGNOSIS B
ON A.EHR_ID=B.EHR_ID WHERE EHR_DATE between '''||start_time||''' and '''||end_time||'''';
exception
when others then
dbms_output.put_line(sqlerrm);
end;
ps:要確保你上面表的欄位EHR_DATE為varchar2類型才行,否則要作對應修改.