2017-02-10 26 views
1

永久テーブルにレコードを挿入するためにMySQL関数を使用しようとしています。私のSQL関数のコードは次のようになります -MySQL関数を使用してテーブルにレコードを挿入する

delimiter // 
    create function fn_eval 
    (
    a varchar(36), 
    b int, 
    c varchar(36) 
    ) 
    returns bigint deterministic 
begin 
     declare retvalue int default 0; 
     insert into eval_tbl(a,b,c,d) 
     select a,b,c,d 
     from 
      ((select a,b,c,d from eval_tbl_1 
      inner join eval_tbl_2) 
      ON eval_tbl_1.c = eval_tbl_2.c) 
      ) 

     SET retvalue=1; 
     return retvalue; 
end // 
delimiter ; 

関数を呼び出すしようとしている場合:

select fn_eval ('1', 2, '3') from dual; 

それは、クエリ内のインライン関数としてこれを使用しようとする上で、しかし、1を返します。 OKを返します。私はこれの理由を理解することができません。誰かが私にこれを助けることができますか?

+0

どのように使用しようとしていますか? –

+0

私は次の形式でそれを使用しようとしています: - eval_tbl_aからの選択fn_eval(a、b、c)、a; – Annie

答えて

0

使用されたクエリは正しくありましたが、重複する値を返す特定のフィールドがあるという問題がありました。結果として、結果としてOKを返すクエリが発生しました。別個のレコードを選択するための条件をいくつか追加した後、この問題は解決されました。

関連する問題