CREATE PROCEDURE WHOutBill_DirectorConfirm
@TableName varchar(50),
@OutBillID varchar(20),
@DirectorDate datetime
AS
exec("update " + @TableName + " set DirectorDate='" +convert(varchar(19), @DirectorDate,120) + "',BillState='主管确认' where OutBillID='" + @OutBillID + "'")
GO

解决方案 »

  1.   

    select getdate()+'ab'  --出錯
    轉為字符型就OK
    select convert(varchar(19),getdate(),120)+'ab'
      

  2.   

    CREATE PROCEDURE WHOutBill_DirectorConfirm
    @TableName varchar(50),
    @OutBillID varchar(20),
    @DirectorDate datetime
    AS
    declare @s varchar(8000)
    set @s="update " + @TableName + " set DirectorDate='" +convert(varchar(19), @DirectorDate,120) + "',BillState='主管确认' where OutBillID='" + @OutBillID + "'"
    exec(@s)
    GO
      

  3.   

    sql server 中字符串分解符是单引号,处于字符串当中的连续两个单引号表示一个单引号exec("update " + @TableName + " set DirectorDate='" + @DirectorDate + "',BillState='主管确认' where OutBillID='" + @OutBillID + "'")改成
    exec('update ' + @TableName + ' set DirectorDate='''+@DirectorDate+''',BillState='主管确认' where OutBillID='''+@OutBillID+'''')试试
      

  4.   

    convert(varchar(19), @DirectorDate,120)是把日期型进行转换把?具体是每个参数的含义是什么呢?因为我运行了,好像语法有点错
      

  5.   

    CREATE PROCEDURE WHOutBill_DirectorConfirm
    @TableName varchar(50),
    @OutBillID varchar(20),
    @DirectorDate datetime
    AS
    exec("update " + @TableName + " set DirectorDate='" +convert(varchar(19), @DirectorDate,120) + "',BillState='主管确认' where OutBillID='" + @OutBillID + "'")
    GO
    好像还是不能运行,连语法都通不过
      

  6.   

    你什么也不要动,就在datetime后加上它的宽度8试一下!我也不是很清楚
      

  7.   

    对不起楼主我借用一下我发现上面的语句我实际写了一个,
    CREATE PROCEDURE dt_da
    @dt_ta varchar(50),
    @dt_mc varchar(50)
     AS
    exec("update"  + @dt_ta +" set mc='" +@dt_mc+"'")
    GO
    我想更新的表用变量表示都报错说=号旁有错误楼主你哪里会有错吗借用你的地方很抱谦,这个变量如何表示
      

  8.   

    把参数的日期型改为varchar型,应当没有错了。我以前也碰到过这样的问题。如果用日期型要转换为varchar型才可以用在存储过程中。