日期:2014-05-17  浏览次数:20838 次

求一个插入sql语句。
我新建了一个作业,分了两个步骤。
第一步:判断以当前日期加前缀为表名的表是否存在(如tb_20120810),如果不存在就创建这个表。
第二部:判断以当前日期加前缀为表名的表是否存在(如tb_20120810),如果存在就执行插入语句。

tb_20120810表字段为id name sex age,id是自动编号。插入的值是‘小明’,‘男’,12。

循环执行作业,一直插入这一条值。

本想写成一步但是不会写,目前第一步测试成功,第二步不会写总报错。

求高人。

------解决方案--------------------
---第一步都写了,第二步还写不出来?

DECLARE
cnt NUMBER;
BEGIN 
 FOR LOOP--循环
SELECT COUNT(*) INTO cnt FROM all_tables t WHERE upper(t.table_name)=upper('tb_20120810');
IF cnt=0 THEN --不存在
--创建表
 EXECUTE IMMEDIATE 'create tbale tb_20120810(id number,name varchar2(20),sex varchar2(10),age number)';
 ELSIF
 INSERT INTO tb_20120810 VALUES('')-----插入数据
END IF;
END LOOP---结束循环
END;

------解决方案--------------------
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tb_20120810]') AND type in (N'U'))
insert into ...
GO
------解决方案--------------------
SQL code


declare @i varchar(15)
DECLARE @sql VARCHAR(8000)

select @i = 'tb_'+convert(varchar(8),getdate(),112)

SELECT @sql = 'if not exists(select 1 from sys.tables where name ='''+@i+''')'
    +CHAR(10)+'create table '+ @i+'(id int identity(1,1),name varchar(10),sex varchar(2),age tinyint)'
    +CHAR(10)+    ' else '
    +CHAR(10)+'insert into '+@i+'(name,sex,age)'+CHAR(10)+'select ''小明'',''男'',12'
    
EXEC (@sql)