mlcktmguy
asked on
Test a SPROC, Executing Line By line and Viewing Variable Contents
I'm not getting the expected results from my SPROC. I am testing by right clicking on the SPROC in SSMA and selecting 'Execute Stored Procedure'
I then enter the parameters and press the 'OK' button.
The SPROC runs to completion but the result isn't what is expected.
Is there any way to test the SPROC step by step? In the SPROC below I would like to know the value of @ReturnHoldRecID after the Execute statement
But it continues thru and writes the record.
Here is the SPROC
I then enter the parameters and press the 'OK' button.
The SPROC runs to completion but the result isn't what is expected.
Is there any way to test the SPROC step by step? In the SPROC below I would like to know the value of @ReturnHoldRecID after the Execute statement
Execute dbo.spCheckIfHoldAlreadyExistsOnThisTA @passedPropertyID, @passedTaxAuthorityID, @passedHoldTypeID, @ReturnHoldRecID
It should be returning a value greater than zero, which should then exit the SPROC without going any further due to the IF Statement If @ReturnHoldRecID > 0
Begin
--
Return 0
End /*If*/
But it continues thru and writes the record.
Here is the SPROC
USE [JTSConversion]
GO
/****** Object: StoredProcedure [dbo].[sptblHold_Insert] Script Date: 11/28/2017 10:53:34 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sptblHold_Insert]
@passedTaxAuthorityID int = 0,
@passedPropertyID int = 0,
@passedHoldTypeID int = 0,
@passedHoldEffectiveDate datetime = null,
@passedComment nvarchar(Max)= null,
@passedDateAdded datetime = null,
@passedUserAdded nvarchar(50) = null
As
Begin
Set NOCOUNT on;
Declare @ReturnHoldRecID int
Execute dbo.spCheckIfHoldAlreadyExistsOnThisTA @passedPropertyID, @passedTaxAuthorityID, @passedHoldTypeID, @ReturnHoldRecID
--
-- @ReturnRecID is the record number where the TA and HOld were found
-- If @ReturnRecID is greater than zero the hold is already on the record and we can get out.
--
If @ReturnHoldRecID > 0
Begin
--
Return 0
End /*If*/
--
-- The Hold is not already on this TA or Property so Add it.
--
Insert dbo.tblHolds (
TaxAuthorityID,
PropertyID,
HoldTypeID,
HoldEffectiveDate,
Comment,
DateAdded,
UserAdded)
Values (
@passedTaxAuthorityID ,
@passedPropertyID ,
@passedHoldTypeID ,
@passedHoldEffectiveDate ,
@passedComment ,
@passedDateAdded ,
@passedUserAdded )
--Set @NewPayYearID = SCOPE_IDENTITY()
-- RETURN @NewPayCostID
END
SOLUTION 2 - USING OUTPUT Parameters
I have created sample procedure ( PROC1, and PROC 2) and shown how we can get value from one procedure to another using OUTPUT paramters. Detailed Explanation is written inside the proc2.
CREATE PROC1
CREATE PROC2
EXECUTION
OUTPUT
I have created sample procedure ( PROC1, and PROC 2) and shown how we can get value from one procedure to another using OUTPUT paramters. Detailed Explanation is written inside the proc2.
CREATE PROC1
CREATE PROC Proc1
(
@ID INT OUTPUT
)
AS
BEGIN
SELECT @ID = 20
RETURN
END
GO
CREATE PROC2
CREATE PROC Proc2
(
@Vals INT
)
AS
BEGIN
DECLARE @RecieveVALUE AS INT
EXECUTE [dbo].Proc1 @RecieveVALUE OUTPUT /* This is how we call the other SP and GET THE value in the local variable from other SP */
SELECT @RecieveVALUE ReturnValuefromPROC1
END
EXECUTION
EXEC Proc2 0
OUTPUT
/*------------------------
OUTPUT
------------------------*/
ReturnValuefromPROC1
--------------------
20
(1 row(s) affected)
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
Excellent, thank you.
I have created sample procedure ( PROC1, and PROC 2) and shown how we can get value from one procedure to another. Detailed Explanation is written inside the proc2.
CREATE PROC1
Open in new window
CREATE PROC2
Open in new window
EXECUTION
Open in new window
OUTPUT
Open in new window
Will provide you another solution using output parameters in sometime.