2017-03-27 20 views
1

を返します。ちょうどヌル、それは間違っているcust_nameを返すことになっていますか?ありがとうございました。MySQLのストアドプロシージャは、以下のコードはここにあるヌル

DELIMITER $$ 
    USE a_schema_in_mysql $$ 
    create procedure noemail() 
    begin 
     declare cust_name char; 
     declare custcursor cursor for 
      select cust_name from customers where cust_email is null; 

     open custcursor; 
     loop 
      fetch custcursor into cust_name; 
      select concat('Null email host is',cust_name) as noemailcust; 
     end loop; 
     close custcursor; 
    end$$ 
    DELIMITER ; 

    select * from customers; 

    +------------+---------------+----------------------+-----------+------------+ 
    | cust_id | cust_name  | cust_address   | cust_city | cust_state | 
    +------------+---------------+----------------------+-----------+------------+ 
    | 1000000001 | Village Toys | 200 Maple Lane  | Detroit | MI   | 
    | 1000000002 | Kids Place | 333 South Lake Drive | Columbus | OH   | 
    | 1000000003 | Fun4All  | 1 Sunny Place  | Muncie | IN   | 
    | 1000000004 | Fun4All  | 829 Riverside Drive | Phoenix | AZ   | 
    | 1000000005 | The Toy Store | 4545 53rd Street  | Chicago | IL   | 
    +------------+---------------+----------------------+-----------+------------+ 
    +----------+--------------+--------------------+-----------------------+ 
    | cust_zip | cust_country | cust_contact  | cust_email   | 
    +----------+--------------+--------------------+-----------------------+ 
    | 44444 | USA   | John Smith   | [email protected] | 
    | 43333 | USA   | Michelle Green  | NULL     | 
    | 42222 | USA   | Jim Jones   | [email protected] | 
    | 88888 | USA   | Denise L. Stephens | [email protected] | 
    | 54545 | USA   | Kim Howard   | [email protected] | 
    +----------+--------------+--------------------+-----------------------+ 

と以下のエラー:

mysql> call noemail; 
+-------------+ 
| noemailcust | 
+-------------+ 
| NULL  | 
+-------------+ 
1 row in set (0.00 sec) 

ERROR 1329 (02000): No data - zero rows fetched, selected, or processed 

ヘルプ私にしては、あなたに感謝

答えて

0

あなたをせずに!あなたのカラム名でもある同じ名前 "cust_name"を使用しています。 パラメータ名または変数名がフィールド名と競合する場合は、パラメータまたは変数名が使用されます。

私が編集を追加してい:

DELIMITER $$ 
USE a_schema_in_mysql $$ 
create procedure noemail() 
begin 
    declare cust_name_s char; 
    declare custcursor cursor for 
     select cust_name from customers where cust_email is null; 

    open custcursor; 
    loop 
     fetch custcursor into cust_name_s; 
     select concat('Null email host is',cust_name_s) as noemailcust; 
    end loop; 
    close custcursor; 
end$$ 
DELIMITER ; 
+1

の間違っているものkonwしたい私は、SQL〜と何についての基本的な原則についての詳細を学ぶべきだと思う、どうもありがとうございましたcharのデフォルトの長さ、charをchar(20)に合わせて実行可能にします。非常に感謝:)私は初心者です – EimanTan

0

私はあなたが欲しいものを達成できると仮定し、カーソルの使用

DELIMITER $$ 
USE a_schema_in_mysql $$ 
create procedure noemail() 
begin 
    select concat('Null email host is',cust_name) from customers where cust_email is null; 
end$$ 
DELIMITER ; 
+0

私は知っているが、私は私のコーダ – EimanTan

関連する問題