ALTER PROCEDURE [dbo].[DS_insertBorrowForm_P]
    -- Add the parameters for the stored procedure here
@sql nvarchar(8000)                  --必须指定长度
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    -- Insert statements for procedure here
    exec sp_executesql @sql
ENDgo--调用
exec [dbo].[DS_insertBorrowForm_P] N'insert into DS_Bor_Apply_T (BorrowID,BorrowUser,BorrowDepartment,Phone,BorrowDate,BorrowPurpose,BorrowMethod,BorrowPeriod,ReturnDate,IsEmergency,Re) values(''1206154424'',''4'',''开发部'',''12'',''2008-12-06 15:35:33'',''编年修志'',''实体借阅'',''123'',''2008-12-12'',''0'',''123'')'

解决方案 »

  1.   

    如果这个字符串
    insert into DS_Bor_Apply_T (BorrowID,BorrowUser,BorrowDepartment,Phone,BorrowDate,BorrowPurpose,BorrowMethod,BorrowPeriod,ReturnDate,IsEmergency,Re) values('1206154424','4','开发部','12','2008-12-06 15:35:33','编年修志','实体借阅','123','2008-12-12','0','123')
    单独在查询分析器里执行是成功的,但这个字符串用变化来代替,
    然后再用语句exec sp_executesql 是不成功的,为什么呢?
    是单引号的问题在转换成参数之前,应该用两个单引号来代替一个单引号
      

  2.   

    用1楼的修改吧,
    参数nvarchar未指定长度,系统默认为1个字符,也就是nvarchar(1)
    insert into ....语句被截断出第一个字符'i',所以显示找不到存储过程i的错误