ERRORE: la query non ha destinazione per i dati di risultato

CREATE OR REPLACE FUNCTION _chkLogin(userid varchar, pwd varchar)
RETURNS BOOLEAN AS
$BODY$
DECLARE 
 passed BOOLEAN;
BEGIN
 SELECT  (_password = $2) FROM _vRegistration WHERE _userid = $1;
 RETURN passed;
END;
$BODY$
LANGUAGE 'plpgsql';

Quando sono in esecuzione il codice di cui sopra sono sempre il seguente errore,

SELECT _chkLogin('username','abcd') as passed;

ERRORE: la query non ha meta per
risultato dati

Ho usato eseguire poi ho un problema diverso,

PERFORM _chkLogin('username','abcd');

Di ERRORE: errore di sintassi vicino o
“eseguire”

Mi suggerisce cosa devo fare per superare questo errore.

InformationsquelleAutor Chaitanya | 2010-01-18

 

2 Replies
  1. 19

    Si ritorna passati, ma si mai assegnare il valore ad esso.

    E selezionare il comando all’interno della funzione deve avere il posto dove mettere i dati.

    Così. Modificare il codice SQL:

    SELECT  (_password = $2) INTO passed FROM _vRegistration WHERE _userid = $1;

    Anche – dal momento che si sta utilizzando nomi per le variabili (userid, password) utilizzarli:

    SELECT  (_password = pwd) INTO passed FROM _vRegistration WHERE _userid = userid;
  2. 3

    Note circa assegnare il valore

    (vedi quest’altra domanda per assegnare un valore alla variabile a sezione di dichiarazione)

    La lingua PLpgSQL sintassi sono tanti modi per dire:

     Y := f(X);

    Il EXECUTE clausola è solo per “l’esecuzione dinamica” (meno prestazioni),

     EXECUTE 'f(X)' INTO Y;     

    Utilizzare Y := f(X); o SELECT per eseguire statico dichiarazioni,

     SELECT f(X) INTO Y;

    Utilizzare ESEGUIRE statment quando scarta i risultati o per lavorare con vuoto restituisce:

     PERFORM f(X);     

Lascia un commento