日期:2014-05-18  浏览次数:20479 次

请问这样的存储过程怎么写?
我第一次用存储过程,不太明白
就是每月一号一点将表a(name     char,id     int   4)   的名字改成上一个月的名字命名的表(如tab200702),然后再创建一张表a   .多谢大侠啊。

------解决方案--------------------
定时操作需要用JOB,改表名用SP_RENAME。
------解决方案--------------------
create proc test
AS
declare @name varchar(09),@sql varchar(1000)
select @name= 'tab '+convert(char(06),getdate(),112)
set @sql= 'if exists (select 1 from sysobjects where xtype= ' 'u ' ' and [name]= ' ' '+@name+ ' ' ') drop table '+@name+ ' select * into '+@name+ ' from a truncate table a '
exec(@sql)

GO
------解决方案--------------------
建立作业每月一号一点定时执行存储过程PU_A~~~

CREATE TABLE A(NAME NCHAR(10),ID INT)
INSERT A SELECT '李四 ',9
SELECT * FROM A
GO

CREATE PROC PU_A
AS
BEGIN

DECLARE @YEAR_MONTH NCHAR(9)
SELECT @YEAR_MONTH= 'TAB '+CONVERT(NCHAR(6),DATEADD(MONTH,-1,GETDATE()),112)
--SELECT @YEAR_MONTH

EXEC SP_RENAME 'A ',@YEAR_MONTH

CREATE TABLE A(NAME NCHAR(10),ID INT)

END
GO

EXEC PU_A
GO

SELECT * FROM A
SELECT * FROM TAB200702
GO

DROP PROC PU_A
DROP TABLE TAB200702
DROP TABLE A