2016-07-28 11 views
0

私はphpmyadminを使用している最初のタイマーです。ストアドプロシージャで自分のコードで作業していることを認識していません。私はphpmyadminにストアドプロシージャを作る方法を知らない。phpmyadminのストアドプロシージャ

これは私のコードです:

DELIMITER $$ 
CREATE PROCEDURE sp_1_service_card_report(IN service_card_no INT) 
BEGIN 
    DECLARE error_1 INT; 

    SELECT COUNT(service_card.customer_id) 
    INTO error_1 
    FROM service_card 
    WHERE service_card.id = 27; 

    DECLARE error_2 INT; 

    SELECT COUNT(service_card.serial_no_id) 
    INTO error_2 
    FROM service_card 
    WHERE service_card.id = 27; 

    IF error_1 > 0 AND error_2 > 0 THEN 
    SELECT 
     service_card.id as yes from service_card where service_card.id=27; 
    ELSE 
     SELECT service_card.customer_id as no from service_card.id=27; 
    END IF ; 

END $$ 
DELIMITER ; 

これは私のエラーです:

MySQL said: Documentation

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DECLARE error_2 INT;

SELECT COUNT(service_card.serial_no_id)
INTO ' at line 11

は、あなたたちはこれで私を助けることができますか?私は1時間の答えをここでもstackoverflowで検索しました。

ありがとうございました。

+0

uはこのエラーを得たが、uはにその線を移動しようとしなかった理由私にはわかりませんerror_1のすぐ下の行を宣言しますか? –

+0

2番目のDECLAREを最初のDECLAREの直後に移動してみてください。 –

+0

私はちょうどeror_2を一番上に置きます。私はちょうどコンマ(;)のために赤いxスポットを持っていた "私はちょうど私が間違っていたことを理解できない。 –

答えて

0

DECLARE文は、最初に配置する必要がありますし、あなたの手順の最後に、クエリ内のselectタイプミスがあります

DELIMITER $$ 
CREATE PROCEDURE sp_1_service_card_report(IN service_card_no INT) 
BEGIN 
    DECLARE error_1 INT; 
    DECLARE error_2 INT; 

    SELECT COUNT(service_card.customer_id) 
    INTO error_1 
    FROM service_card 
    WHERE service_card.id = 27; 


    SELECT COUNT(service_card.serial_no_id) 
    INTO error_2 
    FROM service_card 
    WHERE service_card.id = 27; 

    IF error_1 > 0 AND error_2 > 0 THEN 
    SELECT 
     service_card.id as yes from service_card where service_card.id=27; 
    ELSE 
     SELECT service_card.customer_id as no from service_card where service_card.id=27; 
    END IF ; 

END $$ 
DELIMITER ;