[SQL] 구분 기호와 저장 프로 시저 구문을 만들 MYSQL
SQL구분 기호와 저장 프로 시저 구문을 만들 MYSQL
나는이 같은 구분 기호를 사용하여 MySQL의에서 저장 프로 시저를 만들려고하고있다 :
use am;
DELIMITER $$
CREATE PROCEDURE addfields()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE acc INT(16);
DECLARE validId INT DEFAULT 0;
END $$
DELIMITER ;
그것은 나에게 오류를 제공합니다 :
#1304 - PROCEDURE addfields already exists
구분 기호로 저장 프로 시저를 만들고 처음있는 경우이를 삭제에 대한 적절한 구문은 무엇입니까?
해결법
-
==============================
1.여기 구분하는 방법과 전화하는 방법과 저장 프로 시저 샘플 MYSQL입니다 ..
여기 구분하는 방법과 전화하는 방법과 저장 프로 시저 샘플 MYSQL입니다 ..
DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_user_login` $$ CREATE DEFINER=`root`@`%` PROCEDURE `sp_user_login`( IN loc_username VARCHAR(255), IN loc_password VARCHAR(255) ) BEGIN SELECT user_id, user_name, user_emailid, user_profileimage, last_update FROM tbl_user WHERE user_name = loc_username AND password = loc_password AND status = 1; END $$ DELIMITER ;
와, mysql_connection 사양에 의해 호출
$loginCheck="call sp_user_login('".$username."','".$password."');";
이 과정에서 결과를 반환합니다.
-
==============================
2.좋은 프로그래머는 GUI가 중간에 부드러운 당신을하고, 터미널을 사용합니다. 당신이 그것을 사용하고 명령을 기억받을 때 5 배 빠른 속도로 어떤 GUI보다. 생산성 성공을 =.
좋은 프로그래머는 GUI가 중간에 부드러운 당신을하고, 터미널을 사용합니다. 당신이 그것을 사용하고 명령을 기억받을 때 5 배 빠른 속도로 어떤 GUI보다. 생산성 성공을 =.
1.이 같은 MySQL의에 터미널 및 로그인 :
el@apollo:~$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. mysql>
당신이 어떤 절차가 있는지 살펴보십시오합니다 :
mysql> show procedure status; +-----------+---------------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +-----------+---------------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | yourdb | sp_user_login | PROCEDURE | root@% | 2013-12-06 14:10:25 | 2013-12-06 14:10:25 | DEFINER | | utf8 | utf8_general_ci | latin1_swedish_ci | +-----------+---------------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ 1 row in set (0.01 sec)
나는 사람은 아마 당신은 밖으로 시작하는 아무도 없어, 정의했습니다.
데이터베이스로 변경은 삭제합니다.
mysql> use yourdb; Database changed mysql> drop procedure if exists sp_user_login; Query OK, 0 rows affected (0.01 sec) mysql> show procedure status; Empty set (0.00 sec)
4. 좋아, 그래서 지금은 더 저장 한 절차를 정의했다. 간단한 일을합니다 :
mysql> delimiter // mysql> create procedure foobar() -> begin select 'hello'; end// Query OK, 0 rows affected (0.00 sec)
저장 프로 시저에 대한 명령을 입력 할 때 // 터미널로 통신합니다. 저장 프로 시저의 이름는 foobar입니다. 이 매개 변수를 사용하지 않고 "안녕하세요"를 반환해야합니다.
그것은 거기 5. 참조, 당신의 구분 기호를 다시 설정하는 것을 잊지! :
mysql> show procedure status; -> ->
잡았다! 왜이 작동하지 않았다? 당신은 // 기억하는 구분 기호를 설정? 다시로 설정;
6. 절차의 구분 허리와 모양을 설정합니다 :
mysql> delimiter ; mysql> show procedure status; +-----------+--------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +-----------+--------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | yourdb | foobar | PROCEDURE | root@localhost | 2013-12-06 14:27:23 | 2013-12-06 14:27:23 | DEFINER | | utf8 | utf8_general_ci | latin1_swedish_ci | +-----------+--------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ 1 row in set (0.00 sec)
7. 실행을 :
mysql> call foobar(); +-------+ | hello | +-------+ | hello | +-------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)
안녕하세요 완전한 세계, 더 나은 무언가로, 덮어 쓰기 할 수 있습니다.
8. 드롭는 foobar는 매개 변수를 받아 다시 정의하고이를 다시 실행 :
mysql> drop procedure foobar; Query OK, 0 rows affected (0.00 sec) mysql> show procedure status; Empty set (0.00 sec) mysql> delimiter // mysql> create procedure foobar (in var1 int) -> begin select var1 + 2 as result; -> end// Query OK, 0 rows affected (0.00 sec) mysql> delimiter ; mysql> call foobar(5); +--------+ | result | +--------+ | 7 | +--------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)
좋은! 우리는 입력을 받아 그것을 수정하고 출력을 수행하는 과정을 만들었다. 이제 아웃 변수를 수행 할 수 있습니다.
9. 제거는 foobar, 아웃 변수를 확인, 실행 :
mysql> delimiter ; mysql> drop procedure foobar; Query OK, 0 rows affected (0.00 sec) mysql> delimiter // mysql> create procedure foobar(out var1 varchar(100)) -> begin set var1="kowalski, what's the status of the nuclear reactor?"; -> end// Query OK, 0 rows affected (0.00 sec) mysql> delimiter ; mysql> call foobar(@kowalski_status); Query OK, 0 rows affected (0.00 sec) mysql> select @kowalski_status; +-----------------------------------------------------+ | @kowalski_status | +-----------------------------------------------------+ | kowalski, what's the status of the nuclear reactor? | +-----------------------------------------------------+ 1 row in set (0.00 sec)
MySQL은 INOUT 사용량의 10 예 :
mysql> select 'ricksays' into @msg; Query OK, 1 row affected (0.00 sec) mysql> delimiter // mysql> create procedure foobar (inout msg varchar(100)) -> begin -> set msg = concat(@msg, " never gonna let you down"); -> end// mysql> delimiter ; mysql> call foobar(@msg); Query OK, 0 rows affected (0.00 sec) mysql> select @msg; +-----------------------------------+ | @msg | +-----------------------------------+ | ricksays never gonna let you down | +-----------------------------------+ 1 row in set (0.00 sec)
이 일을 좋아, 그것은 함께 문자열에 합류했다. 그래서 당신은 저장 프로 시저라고는 foobar로 그 변수에 전달 된 변수 MSG를 정의하고, @msg이는 foobar에 의해 작성되었습니다.
지금 당신은 구분 기호로 저장 프로 시저를 만드는 방법을 알고. 여기에이 튜토리얼을 계속 저장 프로 시저 내에서 변수의 시작 : http://net.tutsplus.com/tutorials/an-introduction-to-stored-procedures/
-
==============================
3.다음은 MySQL의에서 프로 시저를 작성하려면 코드는 다음과 같습니다
다음은 MySQL의에서 프로 시저를 작성하려면 코드는 다음과 같습니다
DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `procedureName`(IN comId int) BEGIN select * from tableName (add joins OR sub query as per your requirement) Where (where condition here) END $$ DELIMITER ;
이 절차는이 쿼리를 사용하여 호출합니다 :
call procedureName(); // without parameter call procedureName(id,pid); // with parameter
세부 사항 :
1) DEFINER : 루트 사용자 이름이며 서버를 호스팅에서이 쿼리를 실행하면 서버의 IP 주소로 변경할 수 있습니다 호스트가 MySQL은 로컬 호스트의 사용자 이름에 따라 변경합니다.
자세한 내용 여기를 읽어
-
==============================
4.아래에 주어진 나는 간단한 MySQL의 절차를 만들었습니다 :
아래에 주어진 나는 간단한 MySQL의 절차를 만들었습니다 :
DELIMITER // CREATE PROCEDURE GetAllListings() BEGIN SELECT nid, type, title FROM node where type = 'lms_listing' order by nid desc; END // DELIMITER;
친절이 따릅니다. 절차가 생성 된 후에는 동일한 참조하고 실행할 수 있습니다.
-
==============================
5.
DELIMiTER $$ create procedure GetUserRolesEnabled(in UserId int) Begin select * from users where id=UserId ; END $$ DELIMITER ;
from https://stackoverflow.com/questions/15786240/mysql-create-stored-procedure-syntax-with-delimiter by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 분류 번호가 포함 SQL 서버에 VARCHAR 컬럼을합니까? (0) | 2020.04.24 |
---|---|
[SQL] SQL Server의 DD / MMM / YYYY 형식으로 변환 날짜 형식 (0) | 2020.04.24 |
[SQL] IN 연산자를 사용하는 변수를 정의 (T-SQL) (0) | 2020.04.24 |
[SQL] 실행 SELECT 문을 죽이는 방법 (0) | 2020.04.24 |
[SQL] 어떻게 PowerShell을 사용 .SQL 파일을 실행하려면? (0) | 2020.04.23 |