暂修改存储过程,把动态SQL打印出来查看: print @sql
调试成功再把print @sql改为exec(@sql)

解决方案 »

  1.   

    太长了 可以分段PRINT出来调试。
      

  2.   

    @customer_id你定义的是varchar类型,但是下面判断条件的时候,是用的if @customer_id<>0, 这里因为0没有加引号,SQL会尝试把@customer_id的值转换成int型的数据,然后与0进行比较。当你传入的参数@customer_id中含有非数字字符或者值大于2147483647的话,就会报算数溢出错误了