Ⅰ 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类型才行,否则要作对应修改.