2013-12-23 153 views
0

我是新學習存儲過程。現在我試圖做一個過程,它將生成一個隨機數並將其存儲在一個變量中,然後將該值插入到另一個表中。
創建mysql存儲過程錯誤

create procedure getRand() 
begin 
delcare rc varchar(255); 
SELECT CHAR(ROUND(65 + FLOOR(RAND() * 57))) into rc; 
insert into Rand_loader (snum,rnum) values (rc,rc); 
end// 

但是,當我試圖在MySQL運行此則給出了這樣的錯誤

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rc varchar(255); 
SELECT CHAR(ROUND(65 + FLOOR(RAND() * 57))) into rc; 
insert' at line 3 

我無法理解這error.Ill感謝您的幫助
請幫我解決這個

+1

delcare - > DECLARE – Devart

+1

聲明你有一個排字錯誤 – Mihai

+0

問題通過評論中給出的建議解決。是的,它是DECLARE問題 – Despicable

回答

0

你只需要DECLARE更換declare,總是嘗試使用大寫字母,同時編寫SQL命令。

1

你寫了「聲明」錯誤。

CREATE PROCEDURE `getRand`() 
    LANGUAGE SQL 
    NOT DETERMINISTIC 
    CONTAINS SQL 
    SQL SECURITY DEFINER 
    COMMENT '' 
BEGIN 
declare rc varchar(255); 
SELECT CHAR(ROUND(65 + FLOOR(RAND() * 57))) into rc; 
insert into Rand_loader (snum,rnum) values (rc,rc); 
END 
2

請嘗試以下代碼。它爲我

DELIMITER $$ 

CREATE 
    /*[DEFINER = { user | CURRENT_USER }]*/ 
    PROCEDURE `yourdatabasename`.`getRand`() 
    /*LANGUAGE SQL 
    | [NOT] DETERMINISTIC 
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 
    | SQL SECURITY { DEFINER | INVOKER } 
    | COMMENT 'string'*/ 
    BEGIN 
DECLARE rc VARCHAR(255); 
SELECT CHAR(ROUND(65 + FLOOR(RAND() * 57))) INTO rc; 
INSERT INTO Rand_loader (snum,rnum) VALUES (rc,rc); 

    END$$ 

DELIMITER ; 

你可以從這裏

https://code.google.com/p/sqlyog/downloads/list 

下載SQLyog創建表和存儲過程的可視化工具