2010-08-04 7 views
2

cette procédure stockée ne retourne pas avec le salaire format décimal 00,00procédure stockée retour .00 décimal

ALTER PROCEDURE taxable_varsalary 

@emp_code bigint, 
@co_id bigint  

AS 
declare @t_varsalary decimal(8,2) 

set @t_varsalary = (select sum(tran_value) from emp_ded_ben_trans where [email protected]_code and [email protected]_id and period_flg=2 and tax_flg=0) 

RETURN @t_varsalary 
+0

retour fonctionne uniquement avec une valeur int s. –

Répondre

5
ALTER PROCEDURE taxable_varsalary 

@emp_code bigint, 
@co_id bigint, 
@t_varsalary decimal(8,2) OUTPUT 

AS 

    select @t_varsalary = sum(tran_value) 
    from emp_ded_ben_trans 
    where [email protected]_code and [email protected]_id and period_flg=2 and tax_flg=0 

La valeur de retour pour une procédure stockée doit être un int. Utilisez un paramètre de sortie à la place ou select il

+0

(ou un ensemble de données avec une ligne et une colonne) –

+0

Je suis d'accord, je n'ai pas remarqué que shmandor retourne une valeur. +1 pour une bonne prise –

+0

@shmandor - Je ne suis pas sûr de ce que ce commentaire signifie! –

2

Un retour de procédure stockée retourne uniquement un integer, utilisez un paramètre de sortie ou faire un SELECT à la fin

0

Créer une Scalar-Valued Fonction:

CREATE FUNCTION taxable_varsalary 
    @emp_code bigint, 
    @co_id bigint 
RETURNS DECIMAL(8,2) 
AS 
declare @t_varsalary decimal(8,2) 

set @t_varsalary = (select sum(tran_value) from emp_ded_ben_trans where [email protected]_code and [email protected]_id and period_flg=2 and tax_flg=0) 

RETURN @t_varsalary 
0

Vérifiez ci-dessous avec OUTPUT:

ALTER PROCEDURE taxable_varsalary 

@emp_code bigint, 
@co_id bigint  

AS 
BEGIN 
declare @t_varsalary MONEY 

set @t_varsalary = (select sum(tran_value) from emp_ded_ben_trans where [email protected]_code and [email protected]_id and period_flg=2 and tax_flg=0) 

SELECT @t_varsalary OUTPUT 

END 
Questions connexes