CREATE PROC dbo.GSTA_FuDaSCreditCartList    
 @StrWhere varchar(500)  
AS    
  DECLARE @Sql varchar(8000)  
SET @Sql='  
 SELECT DISTINCT    
  OM.OrderNo AS OrderNo,    
  OM.OName,    
  OM.TrsCode,  
  OM.RName,  
  OM.PayNo,  
  pay.Detail PayType,  
  CONVERT(VARCHAR(16),OM.CrTime,20) OrderTime,    
  PayAmount Amount,    
  (SELECT mi.Name FROM OrderStatusDef mi WHERE mi.StatusNo = OM.StatusNo) AS OrderStatus,    
  CASE WHEN CreditCardSupplyTime IS NULL THEN    
   ''-''    
  ELSE    
   CONVERT(VARCHAR(16),CreditCardSupplyTime,20)    
  END AS CreditCardSupplyTime,    
  case when PayKinds=1 then ''未繳款(ATM)''    
  when PayKinds=2 then ''已入帳(ATM)''    
  when PayKinds=3 then ''待退款(ATM)''    
  when PayKinds=4 then ''退款完成(ATM)''    
  when PayKinds=5 then ''已授權(信用卡)''    
  when PayKinds=6 then ''取消授權(信用卡)''    
  when PayKinds=7 then ''已請款(信用卡)''    
  when PayKinds=8 then ''取消請款(信用卡)''    
  end as PayKinds,    
  CASE WHEN(OM.WithInvoice = 1)    
  THEN    
   case when InvoSendTime is null then    
    ''''    
   else    
    ''寄送''    
   end    
  ELSE    
   ''寄送''    
  END AS WithInvoice    
 FROM                 
  OrderM OM    
 INNER JOIN     
  OrderMkt OMkt    
 ON    
  OM.OrderNo = OMkt.OrderNo    
 Left JOIN    
  GemProduct.dbo.Market mkt    
 ON    
  mkt.MktID = OMkt.MktID    
 Left JOIN    
  GemSales.dbo.QueryMarket qmkt    
 ON    
  OMkt.MktID = qmkt.QueryMarketID    
 LEFT JOIN    
  GemProduct.dbo.MktPaytypeInfo pay    
 ON    
  pay.Paytype = OM.PayType    
 WHERE  '+' OM.CTID=''939e7770-169b-4751-b460-c706e4b1ebd4'''+' ORDER BY    
  OM.SupplyDate DESC  
'  
EXEC sp_executesql @SQL  
  
--endregion  
exec GSTA_FuDaSCreditCartList @StrWhere = ' OM.CTID=''939e7770-169b-4751-b460-c706e4b1ebd4'''--报错 过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。
--这是为什么啊?@statement是什么啊?

解决方案 »

  1.   

      DECLARE @Sql nvarchar(8000)  
      

  2.   

    在存储过程中print @Sql 
    然后执行完,拷贝出@Sql内容,然后执行下内容就能发现错误了 
      

  3.   

      DECLARE @Sql nvarchar(4000)  
      

  4.   

    狙击手说的是对的!但是为什么那个语句一定得是nvarchar的呢!
      

  5.   

    就像要是你是男生只能进男厕所一样,sp_executesql 过程要求这个变量 是nvarchar型 呀,你只能定义 成这个