Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
In Over My Head With A Scalar-Valued Function
Message
De
23/12/2009 20:52:58
 
 
À
Tous
Information générale
Forum:
Microsoft SQL Server
Catégorie:
Syntaxe SQL
Titre:
In Over My Head With A Scalar-Valued Function
Versions des environnements
SQL Server:
SQL Server 2005
Application:
Desktop
Divers
Thread ID:
01440468
Message ID:
01440468
Vues:
127
I was experimenting with a Scalar-Valued function to return the total labor value for a job. To do this I created the following function.
USE [JCS]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER FUNCTION [dbo].[GetLaborTotal] 
(
	-- Job Number to be passed into function
	@tcJobNo Char(6)
)
RETURNS Numeric(12,2)
AS
BEGIN

	DECLARE @nRetVal Numeric(12,2)

	IF CAST(@tcJobNo AS int) = 0
		SET @nRetVal = 0.00
	ELSE
		BEGIN
		DECLARE @nTOTOH Numeric(12,0)

		-- Get sum of labor
		SET @nTOTOH = (SELECT sum(nHours * nRate)
							FROM dbo.JCProd
							WHERE cJobno = @tcJobNo)
		
		-- Return the total of hours multiplied by rate
		SET @nRetVal = ISNULL(@nTOTOH, 0)
	END

	RETURN @nRetval

END
I was then trying to test it with the following code.
SELECT JCMAST.cjobno, Dbo.GetLaborTotal(JCMAST.cjobno) AS nTOTOH FROM DBO.JCMAST
The problem is I get the following error when testing. It appears to the related to the cJobno parameter. The cJobNo field in the table is defined as char(6) and contains values such as "001056" and "main ". If I specifically pass a value such as "001056" it works.

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'main ' to data type int.

What am I doing wrong here? What's my best avenue for getting more proficient with these types of functions? Any book suggestions?

TIA
Jeff
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform