请问一下这三行代码应该如何改才可以运行
DECLARE @TableName CHAR(20)
SET @TableName='Table_1'
INSERT INTO @TableName (F1,F2) VALUES ('D1','D2')

解决方案 »

  1.   

    declare @table table(f1 nvarchar(10),f2 nvarchar(10))定义变变量 !
      

  2.   

    declare @table table(f1 nvarchar(10),f2 nvarchar(10))--定义变变量 !
    INSERT INTO @TableName (F1,F2) VALUES ('D1','D2')
    select * from @tablename
      

  3.   

    SET @TableName='Table_1'  --表变量不能这样赋值的!
      

  4.   

    DECLARE @TableName VARCHAR(20) 
    SET @TableName='Table_1' EXEC('INSERT INTO [' + @TableName +'](F1,F2) VALUES (''D1'',''D2'')')
      

  5.   

    DECLARE @TableName CHAR(20) 
    SET @TableName='Table_1' 
    EXEC('INSERT INTO'+' @TableName+ ' (F1,F2) VALUES (''D1'',''D2''))
    动态SQL
      

  6.   

    Soft_Wsx这段代码只能插入到表变量,不能插入到后台基表
    小梁的理解是正确的,但是代码有错误.运行不成功.
      

  7.   

    DECLARE @TableName VARCHAR(20) 
    SET @TableName='Table_1' PRINT('INSERT INTO [' + @TableName +'](F1,F2) VALUES (''D1'',''D2'')')
    /*INSERT INTO [Table_1](F1,F2) VALUES ('D1','D2')
      

  8.   

    DECLARE @TableName VARCHAR(20) 
    SET @TableName='Table_1' 
    PRINT ('INSERT INTO '+@TableName+ ' (F1,F2) VALUES (''D1'',''D2'')')
    /*INSERT INTO Table_1 (F1,F2) VALUES ('D1','D2')应该用VARCHAR,不要用CHAR
      

  9.   

    if object_id('table_1')is not null drop table table_1
    go
    create table table_1(F1 varchar(3),F2 varchar(3))
    go 
    -------------------------------------
    DECLARE @TableName VARCHAR(20) 
    SET @TableName='Table_1' EXEC('INSERT INTO [' + @TableName +'](F1,F2) VALUES (''D1'',''D2'')')
    ----------------------------
    select * from table_1
    F1   F2
    ---- ----
    D1   D2(1 行受影响)没问题
      

  10.   

    CREATE TABLE TABLE_1(F1 VARCHAR(10), F2 VARCHAR(10));DECLARE @TableName VARCHAR(20) 
    SET @TableName='Table_1' 
    EXEC ('INSERT INTO ['+@TableName+'](F1,F2) VALUES (''D1'',''D2'')')
      

  11.   

    ALTER PROCEDURE [dbo].[UP_HRA00_01_ADD]
    @家庭档案号 char(16),
    @个人档案号 char(23),
    @内部标识符 varchar(20),
    @数据元标识符 varchar(20),
    @数据元名称 varchar(60),
    @值 varchar(200)
     AS 
    DECLARE @ID decimal(18,0)
    INSERT INTO [HRA00.01](
    [家庭档案号],[个人档案号],[内部标识符],[数据元标识符],[数据元名称],[值]
    )VALUES(
    @家庭档案号,@个人档案号,@内部标识符,@数据元标识符,@数据元名称,@值
    )
    SELECT @ID = @@IDENTITY         GO
    上面的代码请帮我看一下,我目的想把[HRA00.01]这个表换成指定变量
      

  12.   

    -----创建表-------------------------
    CREATE TABLE [HRA00.01]
    (
    家庭档案号 varchar(16), 
    个人档案号 varchar(23), 
    内部标识符 varchar(20), 
    数据元标识符 varchar(20), 
    数据元名称 varchar(60), 
    值 varchar(200)
    )
    /*
    EXEC [dbo].[UP_HRA00_01_ADD] '100001','100001','TB43333','1111111','绝密档案','008'
    SELECT * FROM [HRA00.01]
    */-----创建存储过程----------------------
    ALTER PROCEDURE [dbo].[UP_HRA00_01_ADD]
    @家庭档案号 varchar(16), 
    @个人档案号 varchar(23), 
    @内部标识符 varchar(20), 
    @数据元标识符 varchar(20), 
    @数据元名称 varchar(60), 
    @值 varchar(200) 
    AS
    BEGINDECLARE @ID decimal(18,0) 
    DECLARE @TB_name VARCHAR(40)
    SET @TB_name='HRA00.01'EXEC ('INSERT INTO ['+@TB_NAME+']([家庭档案号],[个人档案号],[内部标识符],[数据元标识符],[数据元名称],[值])
    VALUES('''+@家庭档案号+''','''+@个人档案号+''','''+@内部标识符+''','''+@数据元标识符+''','''+@数据元名称+''','''+@值+''')')END
      

  13.   

    CREATE TABLE [dbo].[FS001](
    [家庭档案号] [char](16) NULL,
    [个人档案号] [char](23) NOT NULL,
    [内部标识符] [varchar](20) NULL,
    [数据元标识符] [varchar](20) NOT NULL,
    [数据元名称] [varchar](60) NULL,
    [值] [varchar](200) NULL,
    [ID] [decimal](18, 0) IDENTITY(1,1) NOT NULL,
    [数据集ID] [varchar](20) NULL,
     CONSTRAINT [PK_FS001] PRIMARY KEY CLUSTERED 
    (
    [个人档案号] ASC,
    [数据元标识符] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    这段代码如果动态生成传入变量的表如何改一下呢.主键也动态命名一下.
    例如:CREATE TABLE [dbo].@Table(.....
    CONSTRAINT 'PK_'+@Table PRIMARY KEY CLUSTERED 
      

  14.   

    ALTER PROC CREATETABLE     
    @TABLENAME VARCHAR(40)   
    AS   
    DECLARE @SQL VARCHAR(4000),@CreateSql VARCHAR(4000)
    SET @CreateSql=' (
    [家庭档案号] [char] (16) COLLATE Chinese_PRC_CI_AS NULL,
    [个人档案号] [char] (23) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [内部标识符] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL,
    [数据元标识符] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [数据元名称] [varchar] (60) COLLATE Chinese_PRC_CI_AS NULL,
    [值] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL,
    [ID] [decimal] (18, 0) NOT NULL IDENTITY(1, 1),
    [数据集ID] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
    )
    ALTER TABLE [dbo].['+@TableName+'] ADD CONSTRAINT [PK_'+@TableName+'] PRIMARY KEY CLUSTERED ([个人档案号], [数据元标识符])
    'IF OBJECT_ID(@TABLENAME) IS NULL   
    BEGIN   
    SET @SQL='CREATE TABLE dbo.[' + @TABLENAME + ']' + @CreateSql
    PRINT @sql
    EXEC (@SQL)   
    END