参数在何种情况下取那个表没有说明。
表名为变量时,使用动态sql语句来执行。

解决方案 »

  1.   

    CREATE PROCEDURE UpLoadFileToDB
    @FileSize varchar(200), 
    @FileData image, 
    @FileType varchar(4), 
    AS 
    INSERT @RecvDB(FileSize,FileData,FileType) 
    VALUES (@FileSize,@FileData,@FileType)
    GO
    我的意思是这样的@RecvDB也由参数传入,,
    但不知道如果来写..
      

  2.   

    CREATE PROCEDURE UpLoadFileToDB
    @FileSize varchar(200), 
    @FileData image, 
    @FileType varchar(4), 
    AS 
    declare @s varchar(200)
    set @s = 'INSERT '+ @RecvDB+ '(FileSize,FileData,FileType) 
    VALUES ('+@FileSize+','+@FileData+','+@FileType+')'
    exec @s
    GO
      

  3.   

    要使用image类型,首先必须把二进制值转换为二进制字符串,显然,这个二进制字符串必须使用text/ntext来存储,而要使用局部text/ntext数据,需要你在喁喁程序中把文件数据格式化为XML序列字符串
      

  4.   

    那应该如何将文件数据格式转换为XML序列字符串呢?
      

  5.   

    CREATE PROCEDURE UpLoadFileToDB
    @FileSize varchar(200), 
    @FileData ntext, 
    @FileType varchar(4),
    @RecvDB varchar(50)
    AS 
    declare @s varchar(200)
    set @s = 'INSERT '+ @RecvDB+ '(FileSize,FileData,FileType) 
    VALUES ('+@FileSize+','+@FileData+','+@FileType+')'
    exec @s
    GO
    这样不能通过呀...
    错误403:对于数据类型而言运算符无效,运算符为add,类型为ntext
      

  6.   

    在数据库中存储image类型数据会降低数据库性能,建议只保存文件路径,而不保存实际的image数据。如果确实需要保存image数据,可以利用textcopy工具:
    Copy Text or Image into or out of SQL Server
    http://www.databasejournal.com/features/mssql/article.php/1443521
      

  7.   

    CREATE PROCEDURE UpLoadFileToDB
    @FileSize varchar(200), 
    @FileData ntext, 
    @FileType varchar(4),
    @RecvDB varchar(50)
    AS 
    declare @s nvarchar(200) --记得类型是nvarchar
    set @s = 'INSERT '+ @RecvDB+ '(FileSize,FileData,FileType) 
    VALUES ('+@FileSize+','+@FileData+','+@FileType+')'
    exec sp_executesql @s
    GO