次のコードは、指定された年齢パラメータと見つかったレコードの合計数よりも若い顧客のリストを返すことになっています。カーソルを使用したMySQLプロシージャ
私のテーブルの構成は次のとおりです。列ID、FIRST_FIRSTNAME、LASTNAME、DATE_OF_BIRTH
を、私は簡単にこの手順の構文、ロジックと書式のいくつかのミスを犯したかもしれないが、私を許して、私はこれに新しいです!以下は、私のSQLプロシージャです:
DELIMITER $$
DROP PROCEDURE IF EXISTS sample_procedure$$
CREATE PROCEDURE sample_procedure(IN actualinput INT)
BEGIN
DECLARE no_more_customers int(4);
DECLARE l_customer_count int(4);
DECLARE l_id varchar(1);
DECLARE l_first_name varchar(10);
DECLARE l_last_name varchar(10);
DECLARE l_date_of_birth varchar(20);
DECLARE customer_list varchar(250);
DECLARE dateinput DATE;
SET dateinput=DATE_SUB(now(), interval actualinput year);
DECLARE cid CURSOR FOR
SELECT ID, FIRST_FIRSTNAME, LAST_NAME, DATE_OF_BIRTH
FROM customers WHERE DATE_OF_BIRTH >= dateinput;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_customers=1;
SET no_more_customers=0;
SET l_customer_count=0;
OPEN cid;
cid_cursor: REPEAT
FETCH cid INTO l_id, l_first_name, l_last_name, l_date_of_birth; IF no_more_customers THEN
LEAVE cid_cursor;
END IF;
SET customer_list=concat(customer_list, l_id,',',l_first_name,',',l_last_name,',',l_date_of_birth);
SET l_customer_count=1+l_customer_count;
UNTIL no_more_customers
END REPEAT cid_cursor;
CLOSE cid;
SET no_more_customers=0;
SELECT customer_list AS Customers;
SELECT concat(l_customer_count);
END;
$$
私は顧客の年齢を計算するために使用される方法でのエラー、おそらく私は、カーソルを呼び出すために使用される方法の問題や顧客の私の最終的なリストを持っているように見えますnullを返すだけです。 ありがとうございます...
チップのおかげで、メモ帳はそれをカットしていませんでした! – r0m4n