7

I must add stored procedures to MySQL database.

The problem is that the hosting offers phpMyAdmin to manage the database.

I searched on the Internet and the idea is to run the MySQL native statement that creates the procedures, but as the code of procedures often may have ;, we have to change the delimiter in MySQL.

phpMyAdmin does not have this option. Has anyone tried to create stored procedures manually setting the anchor, or something that worked?

Drew
  • 29,895
  • 7
  • 74
  • 104
dennitorf
  • 309
  • 1
  • 4
  • 13

6 Answers6

9

There is a way, see this link: http://blog.nth-design.com/2009/02/25/creating-sp-in-phpmyadmin/

Quote from that link
1.Open phpMyadmin.
2.Select a database to work with.
3.Open the SQL tab.
4.Select all of the SQL statements between the DELIMITER statements in your stored procedure script. Do not include the DELIMITER statements! Here’s what my example script should look like:

DROP PROCEDURE IF EXISTS spFoo $$
CREATE PROCEDURE spFoo ()
BEGIN
    SELECT 'Foo' FROM DUAL;
END $$

5.In the delimiter field, just below the SQL editor’s text area, enter $$ as your delimiter.

Johan
  • 74,508
  • 24
  • 191
  • 319
  • This is precisely the problem. In the phpMyAdmin offered by the hosting, don't appear the text area just bellow the SQL editor's. I can't enter $$ as delimiter. – dennitorf Nov 10 '11 at 16:14
  • 2
    @user1039875 In that case you are still working with a phpMyAdmin version from the stone age, ask Fred Flintstone^H^H^H your sysadmin to update their programs. – Johan Nov 10 '11 at 19:44
6

Why everybody tries to use a visual tool as console?!? There is an easyer way:

Go to your database, and look for "More"

enter image description here

Then this screen will show. If you have created any stored procedures, they will be listed

enter image description here

To add new one click "Add routine"

enter image description here

Bakudan
  • 19,134
  • 9
  • 53
  • 73
1

I had trouble using the 'Routines' feature in PHPMyadmin cos it kept giving me false negatives so i did it via the 'SQL' tab instead.

CREATE PROCEDURE GetUserPwd(email VARCHAR(320), pass VARCHAR(128))
BEGIN
DECLARE userid INT(3) DEFAULT 0;
DECLARE password_equal INT(3) DEFAULT 0;
DECLARE output VARCHAR(30);
SELECT id INTO userid FROM members WHERE user_email = email;
IF userid != 0 THEN
SELECT user_pass = pass INTO password_equal FROM members WHERE id = userid;
IF password_equal = 0 THEN
SET output = 'not exist';
ELSE
SET output = 'exist';
END IF;
END IF;
SELECT output;
END

In the 'Delimiter' text box, type in '$$'. save.

after that , go to your 'Routines' tab and click on 'execute' and enter your inputs when prompted.

Bruce Tong
  • 1,366
  • 15
  • 14
0

create procedure sp_helpme begin select * from my_table; end //

Delimiters in MySQL.

You have to change ';' to '//' on delimeter box in phpmyadmin. After executing successfully revert back the delimeter.

Community
  • 1
  • 1
Amar
  • 99
  • 5
0

Try to create/edit stored procedures and other MySQL objects with visual object editors in dbForge Studio for MySQL. The express edition is free.


  1. Connectivity question - what to do if there is no direct connection to MySQL server? Possible ways: HTTP tunneling - may be used to connect to the MySQL server, it is a method of connecting to the server through HTTP/HTTPS protocol, or using secure connection (SSH/SSL network protocol).
  2. The DELIMITER client command is supported by suggested tool. So, this command can be used in the scripts. Also, stored procedures and other objects may be created and modified in visual editors.
Devart
  • 119,203
  • 23
  • 166
  • 186
  • Given your reputation, I wouldn't want to brush your answer off as spam. Could you please include how your post helps to solve the author's problem? – Sampson Nov 10 '11 at 17:08
  • Of course. Two answers. The first is to use visual editor (as I said). The second: open new SQL document and write CREATE PROCEDURE statement with DELIMITER; the delimiters are supported by this client. – Devart Nov 10 '11 at 17:12
  • Actually - it is known problem in old phpMyAdmin versions. I see two ways - not to use delimiters, or use another MySQL client. – Devart Nov 10 '11 at 17:21
  • Are you saying your product can connect to the OP's server and bypass the limitations placed on phpMyAdmin by the hosting provider? – Sampson Nov 10 '11 at 17:42
  • @JonathanSampson, yes as long as you can connect to the MySQL port, either directly (bad) or via ssh (good). – Johan Nov 10 '11 at 19:45
  • I agree that I hastened to answer and did not explain anything. If it is possible - a HTTP tunneling may be used to connect to the MySQL server, it is a method of connecting to the server through HTTP/HTTPS protocol (in this case an uploading of tunneling php-script is required). – Devart Nov 11 '11 at 08:43
  • @devart - If you can edit you answer to explain all this I'll happily remove my downvote – shanethehat Nov 11 '11 at 10:03
0

You can set a delimiter manually using delimiter $$, where $$ is your chosen delimiter. This works on my shared hosting with phpMyAdmin. You should remember to set it back to ; when you are finished.

shanethehat
  • 15,460
  • 11
  • 57
  • 87