赞
踩
BEGIN
DECLARE username CHAR(20);
DECLARE usermail CHAR(20);
DECLARE i INT DEFAULT 1;
WHILE i<= 400 DO
set username = CONCAT('test',LPAD(i,3,'0'));
set usermail = CONCAT(username,'@test.com');
INSERT INTO jforum_users VALUES (i,'1',username,'nopass','0','0',NULL,'7/4/2021 18:34:55',NULL,'0',NULL,NULL,NULL,'%d/%M/%Y %H:%i','0','0',NULL,NULL,'0','1','0','1','1','1','1','1','1','0','0','1','1','0',NULL,'0',useremail,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,NULL,NULL);
INSERT INTO jforum_user_groups VALUES (3,i);
SET i = i + 1;
END WHILE;
END
1064 - 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 ‘DECLARE username VARCHAR(20)’ at line 2
2.1 在网上找了好久也没有找到一个有用的案例,没办法,找不到案例就从头学一下吧,在如下网站看了一下https://www.runoob.com/w3cnote/mysql-stored-procedure.html,才了解《MySQL存储过程》基本的写法,哎,现在的书代码都不写全啊!!!
2.2 另外,可以使用如下语句先查询每个字段的信息,比如类型,是否可以为NULL等,对于不想填写的字段可以自己用命令修改字段的属性。
mysql> use jforum; Database changed mysql> show tables; +-------------------------+ | Tables_in_jforum | +-------------------------+ | jforum_api | | jforum_attach | | jforum_attach_desc | | jforum_attach_quota | | jforum_banlist | | jforum_banner | | jforum_bookmarks | | jforum_categories | | jforum_config | | jforum_extension_groups | | jforum_extensions | | jforum_forums | | jforum_forums_watch | | jforum_groups | | jforum_karma | | jforum_mail_integration | | jforum_moderation_log | | jforum_posts | | jforum_posts_text | | jforum_privmsgs | | jforum_privmsgs_text | | jforum_quota_limit | | jforum_ranks | | jforum_role_values | | jforum_roles | | jforum_sessions | | jforum_smilies | | jforum_themes | | jforum_topics | | jforum_topics_watch | | jforum_user_groups | | jforum_users | | jforum_vote_desc | | jforum_vote_results | | jforum_vote_voters | | jforum_words | +-------------------------+ 36 rows in set (0.00 sec) mysql> show columns from jforum_users; +-----------------------+--------------+------+-----+----------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------------+--------------+------+-----+----------------+----------------+ | user_id | int(11) | NO | PRI | NULL | auto_increment | | user_active | tinyint(1) | YES | | NULL | | | username | varchar(50) | NO | | | | | user_password | varchar(32) | NO | | | | | user_session_time | bigint(20) | YES | | 0 | | | user_session_page | int(11) | NO | | 0 | | | user_lastvisit | datetime | YES | | NULL | | | user_regdate | datetime | YES | | NULL | | | user_level | tinyint(4) | YES | | NULL | | | user_posts | int(11) | NO | | 0 | | | user_timezone | varchar(5) | NO | | | | | user_style | tinyint(4) | YES | | NULL | | | user_lang | varchar(255) | NO | | | | | user_dateformat | varchar(20) | NO | | %d/%M/%Y %H:%i | | | user_new_privmsg | int(11) | NO | | 0 | | | user_unread_privmsg | int(11) | NO | | 0 | | | user_last_privmsg | datetime | YES | | NULL | | | user_emailtime | datetime | YES | | NULL | | | user_viewemail | tinyint(1) | YES | | 0 | | | user_attachsig | tinyint(1) | YES | | 1 | | | user_allowhtml | tinyint(1) | YES | | 0 | | | user_allowbbcode | tinyint(1) | YES | | 1 | | | user_allowsmilies | tinyint(1) | YES | | 1 | | | user_allowavatar | tinyint(1) | YES | | 1 | | | user_allow_pm | tinyint(1) | YES | | 1 | | | user_allow_viewonline | tinyint(1) | YES | | 1 | | | user_notify | tinyint(1) | YES | | 1 | | | user_notify_always | tinyint(1) | YES | | 0 | | | user_notify_text | tinyint(1) | YES | | 0 | | | user_notify_pm | tinyint(1) | YES | | 1 | | | user_popup_pm | tinyint(1) | YES | | 1 | | | rank_id | int(11) | YES | | 0 | | | user_avatar | varchar(100) | YES | | NULL | | | user_avatar_type | tinyint(4) | NO | | 0 | | | user_email | varchar(255) | NO | | | | | user_icq | varchar(15) | YES | | NULL | | | user_website | varchar(255) | YES | | NULL | | | user_from | varchar(100) | YES | | NULL | | | user_sig | text | YES | | NULL | | | user_sig_bbcode_uid | varchar(10) | YES | | NULL | | | user_aim | varchar(255) | YES | | NULL | | | user_yim | varchar(255) | YES | | NULL | | | user_msnm | varchar(255) | YES | | NULL | | | user_occ | varchar(100) | YES | | NULL | | | user_interests | varchar(255) | YES | | NULL | | | user_biography | text | YES | | NULL | | | user_actkey | varchar(32) | YES | | NULL | | | gender | char(1) | YES | | NULL | | | themes_id | int(11) | YES | | NULL | | | deleted | tinyint(1) | YES | | NULL | | | user_viewonline | tinyint(1) | YES | | 1 | | | security_hash | varchar(32) | YES | | NULL | | | user_karma | double | YES | | NULL | | | user_authhash | varchar(32) | YES | | NULL | | +-----------------------+--------------+------+-----+----------------+----------------+ 54 rows in set (0.01 sec) mysql> select * from jforum_users; Empty set (0.00 sec) mysql> alter table jforum_users alter user_lang set default 'zh-cn'; Query OK, 0 rows affected (0.53 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table jforum_users alter user_email set default 'default@test.com'; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table jforum_users alter user_timezone set default 'GMT+8'; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table jforum_users modify user_session_page int NULL default 1; Query OK, 0 rows affected (0.07 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table jforum_users modify user_posts int NULL default 1; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table jforum_users modify user_timezone varchar(20) NULL default 'GMT+8'; Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show columns from jforum_users; +-----------------------+--------------+------+-----+------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------------+--------------+------+-----+------------------+----------------+ | user_id | int(11) | NO | PRI | NULL | auto_increment | | user_active | tinyint(1) | YES | | NULL | | | username | varchar(50) | NO | | | | | user_password | varchar(32) | NO | | root | | | user_session_time | bigint(20) | YES | | 0 | | | user_session_page | int(11) | YES | | 1 | | | user_lastvisit | datetime | YES | | NULL | | | user_regdate | datetime | YES | | NULL | | | user_level | tinyint(4) | YES | | NULL | | | user_posts | int(11) | YES | | 1 | | | user_timezone | varchar(20) | YES | | GMT+8 | | | user_style | tinyint(4) | YES | | NULL | | | user_lang | varchar(255) | NO | | zh-cn | | | user_dateformat | varchar(20) | NO | | %d/%M/%Y %H:%i | | | user_new_privmsg | int(11) | NO | | 0 | | | user_unread_privmsg | int(11) | NO | | 0 | | | user_last_privmsg | datetime | YES | | NULL | | | user_emailtime | datetime | YES | | NULL | | | user_viewemail | tinyint(1) | YES | | 0 | | | user_attachsig | tinyint(1) | YES | | 1 | | | user_allowhtml | tinyint(1) | YES | | 0 | | | user_allowbbcode | tinyint(1) | YES | | 1 | | | user_allowsmilies | tinyint(1) | YES | | 1 | | | user_allowavatar | tinyint(1) | YES | | 1 | | | user_allow_pm | tinyint(1) | YES | | 1 | | | user_allow_viewonline | tinyint(1) | YES | | 1 | | | user_notify | tinyint(1) | YES | | 1 | | | user_notify_always | tinyint(1) | YES | | 0 | | | user_notify_text | tinyint(1) | YES | | 0 | | | user_notify_pm | tinyint(1) | YES | | 1 | | | user_popup_pm | tinyint(1) | YES | | 1 | | | rank_id | int(11) | YES | | 0 | | | user_avatar | varchar(100) | YES | | NULL | | | user_avatar_type | tinyint(4) | NO | | 0 | | | user_email | varchar(255) | NO | | default@test.com | | | user_icq | varchar(15) | YES | | NULL | | | user_website | varchar(255) | YES | | NULL | | | user_from | varchar(100) | YES | | NULL | | | user_sig | text | YES | | NULL | | | user_sig_bbcode_uid | varchar(10) | YES | | NULL | | | user_aim | varchar(255) | YES | | NULL | | | user_yim | varchar(255) | YES | | NULL | | | user_msnm | varchar(255) | YES | | NULL | | | user_occ | varchar(100) | YES | | NULL | | | user_interests | varchar(255) | YES | | NULL | | | user_biography | text | YES | | NULL | | | user_actkey | varchar(32) | YES | | NULL | | | gender | char(1) | YES | | NULL | | | themes_id | int(11) | YES | | NULL | | | deleted | tinyint(1) | YES | | NULL | | | user_viewonline | tinyint(1) | YES | | 1 | | | security_hash | varchar(32) | YES | | NULL | | | user_karma | double | YES | | NULL | | | user_authhash | varchar(32) | YES | | NULL | | +-----------------------+--------------+------+-----+------------------+----------------+ 54 rows in set (0.01 sec)
2.3 重新修改了一下代码,终于不报错了,但是0行生效,也就是没有任何数据生效。
delimiter $$
create procedure in_param3(in p_in int)
BEGIN
DECLARE username VARCHAR(20);
DECLARE usermail VARCHAR(20);
DECLARE i INT DEFAULT 1;
WHILE i<= 400 DO
set username = CONCAT('test',LPAD(i,3,'0'));
set usermail = CONCAT(username,'@test.com');
INSERT INTO jforum_users VALUES (i,1,username,'root',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'zh-cn','%d/%M/%Y %H:%i',0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,usermail,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO jforum_user_groups VALUES (3,i);
SET i = i +1;
END WHILE;
END$$
delimiter ;
2.4 实在是不知道怎么搞,然后看到Navicat里除了能在《查询》里执行SQL语句外,还有一个《函数》菜单,直接在函数里面执行成功了,代码如下:
CREATE DEFINER=`root`@`localhost` PROCEDURE `in_param1`(in p_in int)
BEGIN
DECLARE username VARCHAR(20);
DECLARE usermail VARCHAR(20);
DECLARE i INT DEFAULT 1;
WHILE i<= 400 DO
set username = CONCAT('test',LPAD(i,3,'0'));
set usermail = CONCAT(username,'@test.com');
INSERT INTO jforum_users VALUES (i,1,username,'root',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'zh-cn','%d/%M/%Y %H:%i',0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,usermail,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO jforum_user_groups VALUES (3,i);
SET i = i +1;
END WHILE;
END
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。