아니요, 저장 프로시저를 생성할 때 정의자 부분은 필수가 아닙니다. 정의자를 생성하고자 할 때 사용합니다.
MySQL.user 테이블에서 모든 사용자와 호스트를 확인하십시오 -
mysql> select user,host from mysql.user;
다음은 출력입니다 -
+------------------+-----------+ | user | host | +------------------+-----------+ | Manish | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | Adam Smith | localhost | | User1 | localhost | | am | localhost | +------------------+-----------+ 9 rows in set (0.03 sec)
여기에서 Adam Smith라는 정의자를 만들어 보겠습니다. 저장 프로시저를 생성하는 쿼리는 다음과 같습니다. -
mysql> delimiter // mysql> CREATE DEFINER = 'Adam Smith'@'localhost' procedure Sp_Definer() -> begin -> select 'Hello MySQL'; -> end; -> // Query OK, 0 rows affected (0.14 sec) mysql> delimiter ;
CALL 명령을 사용하여 저장 프로시저를 호출합니다. 구문은 다음과 같습니다 -
CALL yourStoredProcedureName();
위의 저장 프로시저를 호출합니다.
mysql> call Sp_Definer();
다음은 출력입니다.
+-------------+ | Hello MySQL | +-------------+ | Hello MySQL | +-------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)