none
存储过程中如何将一些变量值Insert到一个表名也是变量的表中 RRS feed

  • 问题

  • 存储过程中如何将一些变量值Insert到一个表名也是变量的表中

    各位高手,我有一个问题一直无法解决,请高手们指点,非常感谢!
    我的问题是“存储过程中如何将一些变量值Insert到一个表名也是变量的表中”,如下该如何写:


    CREATE   procedure   InsertDataRecord  --将数据存入历史数据表中
    @mine varchar(20),
    @stsj smallmoney,
    @stdate varchar(10),
    @sttime varchar(8)
    as
    --保存数据
    begin
    declare @table varchar(8);    --用于存放表名
    set @table= 'dt'+rtrim(cast(datepart(yyyy,getdate()) as char(4))+cast(datepart(MM,getdate()) as char(2))) --设定表名为dt加当月日期如:当月是20089,则为dt20089

    --我需要将以上四个变量的值插入到@table表中,应该如何写呢?请高手指点,非常感谢!
    exec('
    insert ..........  
    ')
    end
    GO
    2009年3月6日 5:40

全部回复

  • 请看我写的例子,关键是动态Sql语句的创建和使用:
    1 ALTER PROC TMP_InsertData  
    2     @Mine VARCHAR(20)  
    3     , @StDate VARCHAR(10)  
    4 AS 
    5 -- 测试:TMP_InsertData 'abc','123'  
    6 DECLARE @TableName VARCHAR(8)  
    7 SET @TableName = 'DT' + CONVERT(VARCHAR(6),GetDate(),112)  
    8 DECLARE @SqlString VARCHAR(200)  
    9 SET @SqlString = 'CREATE TABLE ' + @TableName + '
    10 (
    11     Mine VARCHAR(20)
    12     , StDate VARCHAR(10)
    13 );
    14 INSERT INTO ' + @TableName +'
    15 VALUES(''' + @Mine + ''',''' + @StDate + ''')  
    16 '  
    17 PRINT @SqlString  
    18 EXEC (@SqlString) 

    另外,楼主,这样的问题最好发布到SqlServer版


    理解的越多,需要记忆的就越少
    2009年3月10日 6:58
    版主