IF EXISTS (SELECT name FROM sysobjects 
         WHERE name = 'ComputeJX' AND type = 'P')
   DROP PROCEDURE ComputeJX
GOCREATE PROCEDURE ComputeJX
  @OutResult Numeric(14,2) Output
AS
Begin
  Declare @TheStr Varchar(1000)
  Set @TheStr = 'Select @TheResult = 8*7*5 '
  Exec sp_executesql @TheStr,'@TheResult Numeric(14,2) output',@TheResult = @OutResult output
EndDeclare
  @OutResult1 Numeric(14,2)
Exec ComputeJX @OutResult1 output

解决方案 »

  1.   

    IF EXISTS (SELECT name FROM sysobjects 
             WHERE name = 'ComputeJX' AND type = 'P')
       DROP PROCEDURE ComputeJX
    GOCREATE PROCEDURE ComputeJX
      @OutResult Numeric(14,2) Output
    AS
    Begin
      Declare @TheStr Nvarchar(1000) --改為Nvarchar
      Set @TheStr = 'Select @TheResult = 8*7*5 '
      Exec sp_executesql @TheStr,N'@TheResult Numeric(14,2) output',@TheResult = @OutResult output
    End
    GO
    Declare
      @OutResult1 Numeric(14,2)
    Exec ComputeJX @OutResult1 output
    Select @OutResult1
      

  2.   

    Declare
      @OutResult1 Numeric(14,2)前面加上GO
      

  3.   

    sp_executesql 的前二个参数必须是UNICODE类型的,或者这样:
    Set @TheStr = N'Select @TheResult = 8*7*5 '
    Exec sp_executesql @TheStr,N'@TheResult Numeric(14,2) output',@TheResult = OutResult output