【问题标题】:building a dynamic query to insert data into table构建动态查询以将数据插入表中
【发布时间】:2017-07-03 20:38:34
【问题描述】:
declare @qry nvarchar(100)
declare @Id int
declare @pth varchar(100)
set @Id=4
set @pth='abc'
set @qry='insert into pic_data(o_id,path) values('+@Id+','+@pth+')'
EXEC SP_EXECUTESQL @qry

我正在尝试这样做,但发生了错误

将 varchar 值 'insert 转换为 pic_data(o_id,path) values(' to data type int." 之后我将 id 到 varchar 然后另一个错误来了“无效的列名'abc'。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您缺少 varchar 的引号..

     declare @qry nvarchar(100)
        declare @Id int
        declare @pth varchar(100)
        set @Id=4
        set @pth='abc'
        set @qry='insert into pic_data(o_id,path) values('+cast(@Id as varchar)+','''+@pth+''')'
        EXEC SP_EXECUTESQL @qry
    

    【讨论】:

    • 嗨,但为什么同样的事情在功能中不起作用?
    • 在存储过程中使用相同的代码。函数不支持动态查询。
    【解决方案2】:

    试试这个

    DECLARE @QRY NVARCHAR(100)
    DECLARE @ID INT
    DECLARE @PTH VARCHAR(100)
    set @Id=4
    set @pth='abc'
    
    
    SET @qry='INSERT INTO PIC_DATA(O_ID,PATH) VALUES('+CAST(@Id AS VARCHAR(10))+','+''''+@pth+''''+')'
    Print @qry
    EXEC SP_EXECUTESQL @qry
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      相关资源
      最近更新 更多