2014-01-12 50 views
0

SQLFiddleMySQL存儲過程中沒有數據獲取

我需要循環throught我的光標,而在另一個表中插入新值。

我有兩個表:

CREATE TABLE peoples 
    (
id int auto_increment primary key, 
name varchar(20), 
enabled varchar(1) 
) 
/

INSERT INTO peoples 
(name, enabled) 
VALUES 
('john', 'F'), 
('jane', 'T') 
/

CREATE TABLE test 
    (
id int, 
logins int 
) 
/

,我需要選擇啓用= T所有人民和插入我的第二臺「測試」的新條目。我創建了一個存儲過程:

CREATE PROCEDURE sp_a() 
BEGIN 
DECLARE p int; 
DECLARE done INT DEFAULT FALSE; 
DECLARE peoples_cur CURSOR FOR select p.id from peoples p where p.enabled='T'; 
OPEN peoples_cur; 
REPEAT 
     FETCH peoples_cur INTO p; 
     IF NOT done THEN 
     INSERT INTO test 
     (id, logins) 
     VALUES 
     (p, '999'); 
     END IF; 
    UNTIL done END REPEAT; 
CLOSE peoples_cur; 
END; 
/

但我得到的錯誤:

No data - zero rows fetched, selected, or processed: CALL sp_a() 

SQLFiddle

回答

1

簡單的方法:

DROP PROCEDURE IF EXISTS sp_a; 

DELIMITER $$ 
CREATE PROCEDURE `sp_a`() 
BEGIN 
INSERT INTO test (logins) 
SELECT COUNT(id) AS l FROM peoples WHERE enabled = 'T'; 
END$$ 

CALL sp_a(); 
+0

相當不錯。但我只想插入檢索到的ID和一個數字作爲登錄。您的建議不起作用,因爲名稱不是登錄類型。 – StarsSky

+0

@StarsSky抱歉。 5分鐘。 – voodoo417

+0

@StarsSky現在查看 – voodoo417

相關問題