구문

설명

저장 프로시저를 만듭니다. 기본적으로 루틴은 다음과 같습니다.기본 데이터베이스와 연결됩니다. Routineexplically 를 주어진 데이터베이스와 연결하려면 이름을 db_name 으로 지정하십시오.sp_namewhen 당신이 그것을 만들 수 있습니다.

루틴이 호출되면 암시 적 사용 db_name 이 수행됩니다(루틴이 종료 될 때 andundone). 루틴이 가지고있는 원인그것이 실행되는 동안 주어진 기본 데이터베이스. 명령문 사용설정 된 루틴은 허용되지 않습니다.,

저장 프로 시저가 생성되면CALL명령문(호출 참조)을 사용하여 호출합니다.

CREATE PROCEDURE문을 실행하려면CREATE ROUTINE권한이 필요합니다. 기본적으로 MariaDBautomatically 는 theroutine 작성자에게ALTER ROUTINEEXECUTE권한을 부여합니다. 저장된 루틴 권한도 참조하십시오.,

DEFINER과 SQL 보안 절 보안 컨텍스트를 지정합 tobe 을 확인할 때 사용한 액세스 권한을 루틴에서 수행 시간,asdescribed 니다. 수퍼 권한 또는 MariaDB10.5.2 에서 설정된 사용자 권한이 필요합니다.

경우에는 일상적인 이름이 동일한 이름으로 내장 SQLfunction 사용해야 합니다 사이에 공백이 이름과 followingparenthesis 를 정의할 때 일상적인,또는 구문 오류가 발생합니다. 나중에 루틴을 호출 할 때도 마찬가지입니다., 이러한 이유로,wesuggest 는 것을 방지하는 것이 좋습니다 다시 이름을 사용하여 기존의 SQLfunctions 에 대한 당신의 자신의 저장합니다.

IGNORE_SPACE SQL 모드는 storedroutines 가 아닌 내장 함수에 적용됩니다. IGNORE_SPACE 가 활성화되었는지 여부에 관계없이 항상 루틴 이름 뒤에 공백을 가질 수 있습니다.

괄호 안에 묶인 매개 변수 목록이 항상 있어야합니다.매개 변수가없는 경우()의 빈 매개 변수 목록을 사용해야합니다. 매개 변수 이름은 대/소문자를 구분하지 않습니다.,

각 매개 변수를 선언할 수 있습을 사용하여 모든 유효한 데이터 유형을 제외하고는 대조 특성을 사용할 수 없습니다.

프로시저 이름으로 사용할 유효한 식별자는 식별자 이름을 참조하십시오.

IN/OUT/INOUT

각 매개 변수는 기본적으로IN매개 변수입니다. 을 지정하지 않포 매개 변수를 사용하여 키워드OUT또는INOUT기 전에 매개 변수 이름.

AnIN매개 변수는 프로 시저에 값을 전달합니다., 프로 시저가 값을 mightmodify 하지만 프로 시저가 반환 될 때 수정이 호출자에게 표시되지 않습니다. OUT매개 변수는 theprocedure 의 값을 호출자에게 다시 전달합니다. 초기 값은 procedure 내에서 NULL 이며 procedurereturns 때 호출자에게 해당 값이 표시됩니다. 는INOUT매개 변수 초기화에 의해 호출할 수 있도록 수정 절차에 의해,그리고 어떤 변화에 의해 만들어진 절차 isvisible 하자면 절차를 반환합니다.,

OUT또는INOUT매개 변수는,통행하는 사용자 정의 변수를CALL문을 호출하는 절차를 얻을 수 있도록 itsvalue 면 절차를 반환합니다. 는 경우 호출하 procedurefrom 내에서 다른 저장 프로시저 또는 기능을 전달할 수도 있습 aroutine 매개 변수 또는 지역의 일상적인 변수로는IN또는INOUT매개 변수입니다.

결정/비결정

DETERMINISTICNOT DETERMINISTIC함수에만 적용됩니다., 을 지정하는DETERMINISTC또는NON-DETERMINISTIC에서는 절차를 효과가 없습니다. 기본값은NOT DETERMINISTIC입니다. 함수는 항상 동일한 입력에 대해 동일한 값을 반환 할 때DETERMINISTIC입니다. 예를 들어 잘림 또는 하위 문자열 함수입니다. 따라서 데이터와 관련된 모든 함수는 항상NOT DETERMINISTIC입니다.,

포함 SQL/SQL/읽기 SQL 데이터/수정 SQL 데이터

CONTAINS SQL,NO SQL,READS SQL DATA,andMODIFIES SQL DATA는 유익한 조항을 알려주는 서버가 어떤 기능 않습니다. MariaDB 는 지정된 절이 올바른지 어떤 식 으로든 확인하지 않습니다. 이러한 절 중 어느 것도 지정되지 않은 경우CONTAINS SQL가 기본적으로 사용됩니다.

MODIFIES SQL DATA는 기능이 포함되는 문장 수정할 수 있습니다 데이터를 데이터베이스에 저장됩니다., 함수에 DELETE,UPDATE,INSERT,REPLACE 또는 DDL 과 같은 명령문이 포함 된 경우 발생합니다.

READS SQL DATA는 기능을 읽기 데이터를 데이터베이스에 저장하지 않지만,수정하는 데이터입니다. 이것은 SELECT 문이 사용되지만 쓰기 작업이 실행되지 않는 경우에 발생합니다.

CONTAINS SQL는 기능을 포함하는 적어도 하나 SQL 문지만,그것을 읽거나 쓰는 모든 데이터베이스에 저장됩니다. 예를 들면 SET or DO 가 있습니다.,MariaDB 는 현재 SQL 이외의 언어를 지원하지 않기 때문에

NO SQL는 아무 의미도 없습니다.

routine_body 는 유효한 SQL 프로 시저 문으로 구성됩니다. 이것은 SELECT 또는 INSERT 와 같은 간단한 명령문이거나 BEGIN 및 END 를 사용하여 작성된 acompound 명령문 일 수 있습니다. 복합 statement 에는 선언,루프 및 기타 제어 structurestatements 가 포함될 수 있습니다. 구문 세부 사항은 프로그래밍 방식 및 복합 문을 참조하십시오.

MariaDB 는 루틴이CREATEandDROP 과 같은 DDL 문을 포함하도록 허용합니다., MariaDB 는 또한 저장 프로 시저(저장되지 않은 함수)가COMMIT와 같은 SQL 트랜잭션 문을 포함하도록 허용합니다.

instored 루틴이 허용되지 않는 문에 대한 추가 정보는 저장된 루틴 제한을 참조하십시오.

를 호출하여 저장된 절차에서 내에서 프로그램

에 대한 정보를 호출하여 저장된 절차에서 내에서 프로그램 언어로 작성 있는 MariaDB/MySQL 인터페이스는 호출을 참조하십시오.

또는

MariaDB 를 10.1 부터 대체하십시오.,3

경우 선택적인OR REPLACE절을 사용하는 역할을 수행에 대한 바로 가기

DROP PROCEDURE IF EXISTS name;CREATE PROCEDURE name ...;

제외하고는 모든 기존의 권한 절차를 위해 삭제되지 않습니다.

sql_mode

MariaDB 저장 sql_mode 시스템 변수 설정에 사용되는 시간 일상적인 만들,그리고 항상 실행하고 일상적인 이 설정과 함께 힘에 관계없이 서버의 SQL 모드에 있을 때 효력이 일상적인 호출됩니다.

캐릭터 설정 및 데이터 정렬

절차를 매개 변수를 선언할 수 있습와 캐릭터 설정/정렬., 문자 집합과 데이터 정렬이 특별히 설정되지 않은 경우 생성 시 데이터베이스 기본값이 사용됩니다. 는 경우에 데이터베이스의 기본값 변경후 단계에서,저장 프로시저는 캐릭터 설정/정렬 변경되지 않는다는 것은 동시에 저장된 절차를 요구를 삭제하거나 재작성하도록 동일한 캐릭터 설정/정렬 데이터베이스로 사용됩니다.

Oracle Mode

MariaDB10.3 부터 MariaDB10.3 에서 Oracle 의 PL/SQL 언어의 하위 집합은 전통적인 SQL/PSM 기반 MariaDB 구문 외에도 지원되었습니다., Oracle mode 실행 시 변경 사항에 대한 자세한 내용은 MariaDB10.3 의 Oracle mode 를 참조하십시오.

다음 예제에서는 간단한 저장 프로시저를 사용하는OUT매개 변수입니다. 그것을 사용하여 구분 기호를 설정하는 명령을 새로운 구분 기호의 기간 동안 과정—시 구분 기호에서 mysql 클라이언트입니다.,

캐릭터 설정 및 정렬:

를 만들거나 교체:

see

  • 식별자 이름
  • 저장 프로시저를 개요
  • 변경 절차
  • 드롭 절차
  • SHOW CREATE 절차
  • 쇼 절차의 상태
  • 저장 일상적인 권한을
  • 정보 스키마틴 테이블

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다