4

以下のストアドプロシージャを作成できましたが、ドロップして関数として作成するのに問題があります。どんな助けでも大歓迎です:

CREATE PROC spTriangular
   @ValueIn int,
   @ValueOut int OUTPUT
AS
   DECLARE @InWorking int
   DECLARE @OutWorking int

   IF @ValueIn != 1
   BEGIN
         SELECT @InWorking = @ValueIn - 1
         EXEC spTriangular @InWorking, @OutWorking OUTPUT

         SELECT @ValueOut = @ValueIn + @OutWorking
   END
   ELSE
   BEGIN
         SELECT @ValueOut = 1
   END

   RETURN
GO

このストアドプロシージャを実行する場合:

DECLARE @WorkingOut int
DECLARE @WorkingIn int

SELECT @WorkingIn = 5

EXEC spTriangular @WorkingIn, @WorkingOut OUTPUT

PRINT CAST(@WorkingIn AS varchar) + ' Triangular is ' + CAST(@WorkingOut AS  varchar)
GO

Triangular is 15
4

1 に答える 1

2

これを試して:

CREATE FUNCTION dbo.spTriangular
(@ValueIn int)
RETURNS  int
AS
  DECLARE @ValueOut int
  DECLARE @InWorking int
  DECLARE @OutWorking int
  IF @ValueIn != 1
  BEGIN
           SELECT @InWorking = @ValueIn - 1
            SELECT @OutWorking = dbo.spTriangular(@InWorking)

            SELECT @ValueOut = @ValueIn + @OutWorking
  END
  ELSE
  BEGIN
            SELECT @ValueOut = 1
  END
  RETURN(@ValueOut)
于 2012-04-13T16:11:46.277 に答える