ALTER PROCEDURE InsertoBook 
(
/*用于添加图书*/
@TableName varchar(50),
@BookName varchar(100),
@BookLength varchar(10),
@BookShortIntroduction varchar(100),
    @BookIntroduction text,
    @BookType varchar(50),
    @BookSubType varchar(50),
    @BookLanguage varchar(5),
    @FileType varchar(5),
    @FileFullName varchar(100),
    @BookClass varchar(50),
    @BookSubClass varchar(50)
)

AS
BEGIN

EXEC('INSERT INTO'+' '+@TableName+' '+'(BookId,BookName,BookLength,BookShortIntroduction,BookIntroduction,BookType,BookSubType,BookLanguage,CreatTime,DownLoadCounts,FileType,FileFullName,BookClass,BookSubClass) VALUES (DEFAULT,'+@BookName+','+@BookLength+','+@BookShortIntroduction+','+@BookIntroduction+','+@BookType+','+@BookSubType+','+@BookLanguage+',DEFAULT,DEFAULT,'+@FileType+','+@FileFullName+','+@BookClass+','+@BookSubClass+')')

END老是录入不了,第一个参数就没通过,我用过不带参数的,成功录入,说明各字段没问题,感觉是分界符 ' 的题,今天弄了好久啦,请有经验的朋友抽空帮改一下,本来我是写在一行的,可论坛这里却长度不够,所以看起来可能麻点.(参数类型和表里的一样,表名除外)

解决方案 »

  1.   

    ALTER PROCEDURE InsertoBook 
    (
    /*用于添加图书*/
    @TableName varchar(50),
    @BookName varchar(100),
    @BookLength varchar(10),
    @BookShortIntroduction varchar(100),
        @BookIntroduction text,
        @BookType varchar(50),
        @BookSubType varchar(50),
        @BookLanguage varchar(5),
        @FileType varchar(5),
        @FileFullName varchar(100),
        @BookClass varchar(50),
        @BookSubClass varchar(50)
    )AS
    BEGINEXEC
    ('
    INSERT INTO '+ @TableName +'(BookName,BookLength,BookShortIntroduction,BookIntroduction,BookType,BookSubType,BookLanguage,FileType,FileFullName,BookClass,BookSubClass) 
    VALUES ('''+@BookName+''','''+@BookLength+''','''+@BookShortIntroduction+''','''+@BookIntroduction+''','''+@BookType+''','''+@BookSubType+''','''+@BookLanguage+''','''+@FileType+''','''+@FileFullName+''','''+@BookClass+''','''+@BookSubClass+''')
    ')END
      

  2.   

    BookId,...,CreatTime,DownLoadCounts
    DEFAULT,...,DEFAULT,DEFAULT
    -----------
    什么意思,不支持这种语法,如果是默认值,不用管这些字段,SQL自动填上它们各自的默认值。createTime 可以用getedate()插入