私は通常、自分自身で物事を把握しようとしますが、私はこれを困惑しています。MySQLカーソルUPDATE LOOP
私は1つのSugarCRMアカウントに、各アクティブユーザーに特定の番号を再割り当てしたいと思っています。私がこれを実行しようとするたびに、「ERROR 1064(42000):... Line 4」が続き、何が間違っているかわかりません。
こんにちは、私は通常、自分で物事を把握しようとするが、私はこれに困惑:
は、これは私がこれまでに作ったものです。
私は1つのSugarCRMアカウントに、各アクティブユーザーに特定の番号を再割り当てしたいと思っています。私がこれを実行しようとするたびに、「ERROR 1064(42000):... Line 4」が続き、何が間違っているかわかりません。
DELIMITER $$
DROP PROCEDURE IF EXISTS assign_leads $$
CREATE PROCEDURE assign_leads(num_rows INT)
BEGIN
SET num_rows = num_rows;
DECLARE i VARCHAR(255);
DECLARE exit_loop BOOLEAN;
DECLARE employee_cursor CURSOR FOR
SELECT users.id
FROM users
WHERE (((users.title)="South Carolina Qualifier") AND ((users.status)="Active"));
DECLARE CONTINUE HANDLER FOR NOT FOUND SET exit_loop = TRUE;
OPEN employee_cursor;
employee_loop: LOOP
FETCH employee_cursor INTO i;
SET @sql_text1 = concat('UPDATE leads SET assigned_user_id = ',@i,' WHERE ((assigned_user_id IS NULL OR assigned_user_id = '1' OR assigned_user_id = '') AND do_not_call = '0' AND deleted = '0' AND status = 'New') LIMIT ',@num_rows,' 1;')
PREPARE stmt1 FROM @sql_text1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
IF exit_loop THEN
CLOSE employee_cursor;
LEAVE employee_loop;
END IF;
END LOOP employee_loop;
END $$
DELIMITER ;
私は、クエリをchengedして、それが今のストアドプロシージャを受け入れますが、私は手順を使用しようとすると、CALLのassign_leads(100)それはERROR 1064(42000)になり:あなたのSQL構文でエラーが発生しています;右側の構文が1行目で 'NULL'の近くで使用されるようにMySQLサーバのバージョンに対応するマニュアルを確認してください。 – JoshS
@JoshS:実行する前にクエリ(変数 '@ sql_text1')をチェックしてください。 'SELECT \' @ sql_text1 \ ';' – wchiquito