2012-11-30 22 views
7

Eventuali duplicati:
Conversion failed when converting the nvarchar value ‘Internet Explorer 3 original’ to data type intStored procedure restituisce una stringa?

Così ho creato questo seguendo semplice stored procedure:

CREATE PROCEDURE test 
AS 
BEGIN 
    RETURN 'works!' 
END 
GO 

poi volevo eseguirlo sparando la seguente dichiarazione:

EXEC test 

Perché ricevo sempre l'errore seguente?

Conversione non riuscita durante la conversione del valore varchar 'works!' al tipo di dati int.

Oh e btw, (quando) è necessario avere l'istruzione GO al termine di una procedura memorizzata? Immagino che qui non abbia alcun effetto dato che salterà fuori dalla procedura quando eseguirò il retention della mia stringa @out.

+3

Dai un'occhiata a [Invio] (http://msdn.microsoft.com/en-us/library/ms174998.aspx). Probabilmente vuoi fare 'Seleziona' funziona! '' – Manatherin

+1

E per quanto riguarda la tua domanda su' GO' vai su http://stackoverflow.com/questions/2299249/che-è-il-usea-di-go-in-sql -server-management-studio –

risposta

20

Utilizzando RETURN consente solo di restituire un codice INTERO

Si sia necessario selezionare il valore

CREATE PROCEDURE test 
    AS 
    BEGIN 
     SELECT 'works!' 
    END 

o se si desidera assegnare in una variabile nel chiamante, utilizzare un parametro OUTPUT

CREATE PROCEDURE test 
    @outputVal VARCHAR(20) OUTPUT 
AS 
BEGIN 
    SET @outputVal = 'works!' 
END 

DECLARE @val VARCHAR(20) 
EXECUTE test @val OUTPUT 
+0

ooh ecco perché, hah! grazie mille, ora posso andare a casa e godermi il mio weekend :-) –

+1

È necessario 'SELECT @ val' alla fine della seconda procedura per ottenere l'output – bendecko

Problemi correlati