Functiewaarde instellen in een opgeslagen SQL Server-procedure

Ik moet een functiewaarde instellen in een opgeslagen procedure.

Ik heb deze procedure

CREATE PROCEDURE [dbo].[spTeste]
AS           
    SET NOCOUNT ON;      

    DECLARE @cvT int    

    SET @cvT = (SELECT dbo.funcTem())

    SELECT @cvT

GO


CREATE FUNCTION [dbo].[funcTem]()    
RETURNS INT
BEGIN       
    DECLARE @vvTempoPr int

    SET @vvTempoPr = 5

    RETURN  @vvTempoPr  

END

GO

exec spTeste

De funcTem retourneert nummer 5 maar binnen een proc is de functie return 0

0
Sorry @MartinSmith maar ik kan de regels van het werk niet! :(
toegevoegd de auteur soamazing, de bron
@MartinSmith Ik moet weten hoe ik de functiewaarde kan krijgen, alleen dit, mijn Proc is ok
toegevoegd de auteur soamazing, de bron
@MartinSmith bewerkt !!!
toegevoegd de auteur soamazing, de bron
Dat is geen geldige opgeslagen procedure. Toon meer code en hoe u de waarde controleert.
toegevoegd de auteur Martin Smith, de bron
Kun je een versneden speelgoedvoorbeeld laten zien dat het probleem vervolgens reproduceert? Uw vraag is onmogelijk te beantwoorden zonder anders te gissen.
toegevoegd de auteur Martin Smith, de bron
EXEC spTeste retourneert een scalaire resultat met de waarde 5 wanneer ik die uitvoer?
toegevoegd de auteur Martin Smith, de bron
Het werkt goed voor mij: selecteer dbo.funcTem() en exec spTeste return 5 .
toegevoegd de auteur Michał Powaga, de bron
@soamazing - welk SQL-product gebruikt u? In Microsoft SQL Server 2005 werkt deze code perfect.
toegevoegd de auteur sfuqua, de bron

2 antwoord

U moet de opgeslagen procedure uitvoeren met EXEC om de retourwaarde vast te leggen.

In plaats van dit:

SET @cvT = (SELECT dbo.funcTem())

... je moet dit doen:

EXEC @cvT = dbo.funcTem()
0
toegevoegd

Hoewel het origineel in SQL Server 2005 werkt, probeer het te veranderen

SET @cvT = (SELECT dbo.funcTem())

naar

SELECT @cvT = dbo.funcTem();

Using EXEC instead of SELECT does not work in SQL Server 2005, fyi. Results in error "Incorrect syntax near ')'." when trying naarcreate the stored proc.

0
toegevoegd