12
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';

上記のコードを実行すると、次のエラーが発生します。

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

エラー: クエリには結果データの宛先がありません

私はパフォーマンスを使用しましたが、別の問題が発生しました。

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

エラー: "perform" またはその近くで構文エラーが発生しました

このエラーを克服するために何をすべきか教えてください。

4

2 に答える 2

21

渡されたものを返しますが、それに値を割り当てることはありません。

また、関数内の選択コマンドには、データを配置する場所が必要です。

そう。SQL を次のように変更します。

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

また、変数(userid、pwd)の名前を使用しているため、それらを使用します

SELECT  (_password = pwd) INTO passed FROM _vRegistration WHERE _userid = userid;
于 2010-01-18T11:11:55.663 に答える
4

代入値に関する注意事項

宣言セクションで変数に値を割り当てるには、この他の質問を参照してください)

言語 PLpgSQL 構文には、多くの言い方があります。

 Y := f(X);

このEXECUTE句は「動的実行」専用です (パフォーマンスが低下します)。

 EXECUTE 'f(X)' INTO Y;     

Y := f(X);orを使用SELECTして静的宣言を実行し、

 SELECT f(X) INTO Y;

結果を破棄するとき、または void リターンを操作するには、PERFORMステートメントを使用します。

 PERFORM f(X);     
于 2014-04-14T11:54:53.713 に答える