2016-04-23 3 views
0

SQLのプロシージャに問題があります。SQLプロシージャは、動作中の問合せにもかかわらず空の表を戻します。

働いているSQLでの私のコードは、そのようなものです:

SELECT * FROM ble.lampa_elektronowa 
WHERE id_typ = 
(SELECT id_typ FROM typ 
WHERE typ = 'pierwszy') 

そして、このクエリの結果は

here

私はこのコードを使用してプロシージャを記述しようとしています(IF Akcja = 'DODAJ_DATA' THEN):

CREATE DEFINER=`root`@`localhost` PROCEDURE `procedura_lampa`( 
IN Akcja   VARCHAR(25), 
IN id_lampa  INT, 
IN nazwa_lampy VARCHAR(50), 
IN id_pomiar  INT, 
IN punkt   INT, 
IN krzywa   INT, 
IN Ia    FLOAT, 
IN IsVariable  FLOAT, 
IN Vg    FLOAT, 
IN Va    FLOAT, 
IN Vs    FLOAT, 
IN Vf    FLOAT, 
IN id_typ   INT, 
IN TYP   VARCHAR(45), 
IN zapas15  INT, 
IN zapas16  INT, 
IN zapas17  INT, 
IN zapas18  INT, 
IN zapas19  INT, 
OUT Komunikat  VARCHAR(200) 
) 
BEGIN 
IF Akcja = 'LISTA' THEN 
    BEGIN 
     SELECT * FROM ble.lampa_elektronowa; 
     SET @Komunikat = 'Wyświetlono'; 
     SET Komunikat = @Komunikat; 

    END; 
END IF; 

IF Akcja = 'DODAJ_DATA' THEN 
    BEGIN 
     INSERT INTO ble.data (data) 
     VALUES (NOW()); 
    END; 
END IF; 

IF Akcja = 'WYPELNIJCBIDLAMPY' THEN 
    BEGIN 

     SELECT nazwa_lampy FROM ble.lampa_elektronowa 
     WHERE id_typ = 
     (SELECT id_typ FROM typ 
     WHERE typ = TYP); 
    END; 
END IF; 

END 

と私はtryinですg:このコードを使用してこのプロシージャを呼び出します。

call procedura_lampa('WYPELNIJCBIDLAMPY', @id_lampy, @nazwa_lampy, @id_pomiar, @punkt, @krzywa, @Ia, @IsVariable, @Vg, @Va, @Vs, @Vf, @id_typ, 'pierwszy', @zapas15, @zapas16, @zapas17, @zapas18, @zapas19, @Komunikat) ; 

この問合せの結果は空です。 "typ"テーブルは、

thatのようになります。

なぜ機能しないのですか? これはいくつかの結果を返します。

+1

質問を編集し、(1)ストアドプロシージャの呼び出し方法を示します。 (2)働くことができないことを説明する。 –

+0

あなたの質問のタイトルを修正してください。それを便利にしてください。 –

答えて

0

手順に2つのセミコロンがあります。 1つはサブクエリの後に、もう1つはENDの後に最初のものを削除してください。まだエラーがある場合は、その内容が何であるかをお知らせください。

+0

あなたはそれについて(確か)(https://dev.mysql.com/doc/refman/5.7/en/if.html)?私は最初のセミコロンを削除すると – Drew

+0

は、MySQL Workbenchは、エラー「: - 期待される 『セミコロン』余分な入力が見つかった構文エラー」が表示されます。 – bananananafu

+0

まだ動作しません。誰か助けてくれますか? – bananananafu

関連する問題