MySql5.0 이상에서는 저장 프로시저를 지원합니다. 최근에 이에 대해 공부할 시간이 있었습니다.
체재:
CREATE PROCEDURE 프로세스 이름([프로세스 매개변수[,...]]) |
CREATE FUNCTION 함수 이름([함수 매개변수[,...]]) |
프로시저 매개변수:
[ IN | OUT | INOUT ] 매개변수 이름 매개변수 유형
함수 매개변수:
매개변수 이름 매개변수 유형
반환 유형:
유효한 MYSQL 데이터 유형
특성:
언어 SQL |
프로시저 본문/함수 본문: 형식은 다음과 같습니다.
시작하다 |
여기서는 독점 기능에 대해서는 관심이 없습니다. 이는 SQL 사양과 호환되지 않으므로 특성(기능)의 관련 내용은 고려되지 않습니다.
//
개발 과정에서 주의해야 할 몇 가지 사항이 있습니다:
1. 저장 프로시저 주석: MySQL은 -- 또는 /**/ 주석의 사용을 지원합니다. 여기서 전자는 라인 주석이고 후자는 세그먼트 주석입니다
. 변수는 선언으로 먼저 선언하며 임시 변수는 @ 접두사를 사용하여 직접 수정할 수 있습니다.
3. MySQL 관리자 관리자를 사용하여 직접 편집하는 경우에는저장 프로시저나 함수를 자동으로 가져올 경우
다음 함수 텍스트를 직접 입력할 수 있습니다.
스크립트에서 MySQL의 기본값은 ";"이 구분 기호이므로 프로시저 본문의 각 문장은
MySQL에 의해 저장 프로시저로 컴파일되고 컴파일 프로세스는 오류를 보고합니다. 따라서 DELIMITER 키워드를 사용하여 스크립트를 작성해야 합니다.
현재 세그먼트 구분 기호가 모두 사용되면 구분 기호가 복원된다는
점을 미리 선언합니다
.아래와 같이:
DELIMITER $$ |
4. MySQL은 다수의 내장 함수를 지원합니다. 그 중 일부는 oracle, informix, sybase 등과 같은 대규모 상용 데이터베이스와 일치하지만 이름은 일관되지 않지만 기능은 일관되는 일부 함수도 있습니다. 이름은 다르지만 기능이 다릅니다. 이는 데이터베이스 개발에서 옮겨온 DBA에게 특히 유용합니다.
5. 저장 프로시저 또는 함수 디버깅: MySQL에서 제공하는 다양한 툴킷을 아직 연구하지 않았으며 디버깅 도구를 제공하는지 잘 모르겠습니다. 그러나 비즈니스 프로세스를 디버깅하는 경우 컴파일 오류를 비교적 쉽게 찾을 수 있습니다. 비교를 사용하십시오. 어리석은 방법은 디버깅 테이블을 만들고 패키지 본문의 각 프로세스 지점에 레코드를 삽입하여 프로그램 실행 프로세스를 관찰하는 것입니다. 이것은 또한 더 편리하고 어리석은 방법입니다. ^_^
다음은 문자열 암호화 알고리즘을 제공하는 두 가지 예입니다. 동일한 입력 매개변수로 호출할 때마다
알고리즘이 상대적으로 간단하고 강력하지 않습니다. 이는 다음과 같은 함수와 프로시저의 형태로 구현됩니다.
(1) 함수
예:
/**/ |
CREATE FUNCTION fun_addmm(inpass varchar(10)) RETURNS varchar(11)
BEGIN
선언 string_in
varchar(78)
;
선언 오프셋 varchar(30) default '
;
/* itinyint 선언;*/
(2) 프로세스
프로시저 생성 `pro_addmm`(IN inpass varchar(10),OUT outpass varchar(11)) |
실행 결과는 다음과 같습니다.
mysql> call pro_addmm('zhouys',@a); |
암호화 알고리즘에는 몇 가지 약점이 있습니다.
1. 대문자와 소문자를 지원하지 않습니다
. 2. 중국어를 지원하지 않습니다
. 3. 암호화 강도가 충분하지 않습니다
. 관심 있는 사람들은 암호 해독 기능을 작성하는 방법을 연구할 수 있으므로 그렇게 하지 않겠습니다. 여기서 자세히 설명하지 마세요.