MySQLエラー1415についてもう一度お詫び申し上げます。mariaDB(MySQL)は、SELECT INTOを使用した後に「関数から結果セットを返すことはできません」というエラー1415を取得します
しかし、私はStackOverflowのエラー1415に関する同様の質問や、Googleの多くの結果について、これまでに2時間も費やしてきましたが、残念ながらどこでも見つけられませんでした私は次の関数宣言で間違っています。
私は、標準の1GBTPC-Hデータベースを使用して、いくつかのコースを割り当てています。この関数は、埋め込みSQLクエリの終了に要する時間を計算します。
DELIMITER //
CREATE FUNCTION
TestIndex (
P_PARTNAME CHAR(55)
)
RETURNS INTEGER
BEGIN
DECLARE
BEGINTIME TIMESTAMP(3);
DECLARE
ENDTIME TIMESTAMP(3);
DECLARE
DURATION INT;
SELECT
CURRENT_TIMESTAMP(3)
INTO
BEGINTIME;
SELECT
1
FROM
PART
WHERE
P_NAME = P_PARTNAME;
SELECT
CURRENT_TIMESTAMP(3)
INTO
ENDTIME;
SELECT
TIMESTAMPDIFF(MICROSECOND, BEGINTIME, ENDTIME)
INTO
DURATION;
RETURN DURATION;
END //
私はmariaDB、Fedoraの26(はい、それはFedoraの上、ハハ、新しいことができない場合)の最新バージョンを使用しています - だけでなく、私は、これはのバージョンとは何かを持っているとは思いません私のDBMS。
私は前の記事の偉大な解決策を見ていましたが、元の機能を多く変更して、各行がMySQLの能力の範囲内にあることを確認することができました(例えば、 PostgreSQLの特別であるPERFORM * FROM
を使用し、それゆえ私は、複数の投稿によると、SELECT 1 FROM
に切り替える。
私もRETURN 1
にしようとしたが、それはまだ1415エラーです。私は実行する構文規則のいずれかを取ったの?ありがとう!!
を使用するように簡略化することができ、その関数はint型を返すように望んでいるときにタイムスタンプを返していません。そして、私が知る限り、 'timestampdiff()'は整数を返し、 'timestamp'は返しません。 –
'SELECT 1 FROM PART WHERE P_NAME = P_PARTNAME'には' INTO'節がありません。結果セットを返そうとしています。 –
@GordonLinoffありがとう!私は 'DURATION'のデータ型を' 'INT''に変更しましたが、それでも動作しません。 (私も質問のコードを更新しました) – jackxujh