// 일반 sql
SELECT * FROM userTbl WHERE name ='이승기';
SELECT * FROM userTbl WHERE name ='성시경';
SELECT * FROM userTbl WHERE name ='은지원';
-> 해당 쿼리는 where 조건의 값만 다르지만 세 쿼리 모두 다 다른 것으로 인식해버린다.
그렇기 때문에 매번 최적화와 컴파일을 다시 수행해야한다.
// SP
CREATE PROC select_by_name
@Name NVARCHAR(3)
AS
SELECT * FROM userTbl WHERE name =@name;
EXEC select_by_name '이승기';
EXEC select_by_name '성시경';
EXEC select_by_name '은지원';
->첫번째 이승기를 검색하는 과정에서만 최적화 및 컴파일을 수행하고
나머지는 메모리(캐시)에 있는것을 사용
// CREATE PROCEDURE 프로시저 명으로 시작,
// AS BEGIN 과 END 사이에 원하는 쿼리를 입력하는 방식
CREATE PROCEDURE Schema_Name.Procedure_Name
AS
BEGIN
SELECT 1
END
GO
// 프로시저를 호출할 때 프로시저명과 AS 사이 ( ) 로 매개변수를 지정 가능
// 매개변수를 리턴받기 위해서는 타입옆에 OUTPUT 작성
CREATE PROCEDURE Schema_Name.Procedure_Name
(
@site NVARCHAR(500)
,@name NVARCHAR(100)
,@ret INT OUTPUT
)
AS
BEGIN
SELECT @site
END
GO
SET NOCOUNT ON; // 쿼리 실행 후 영향 받는 행의 수 반환 X
명령어
예시
// table 생성
CREATE TABLE PEOPLE(
NAME VARCHAR(10),
AGE INT,
)
INSERT INTO PEOPLE(NAME,AGE)VALUES('안정균',23)
INSERT INTO PEOPLE(NAME,AGE)VALUES('김산하',25)
INSERT INTO PEOPLE(NAME,AGE)VALUES('이승현',28)
// 예상 결과 ->
Name Age Name Age
1 안정균 23 1 안정균 24 (+1)
2 김산하 25 2 김산하 27 (+2)
3 이승현 28 3 이승현 31 (+3)
// 커서문 진행
declare
@index int,
@name varchar(10),
@age int
set @index = 0;
/* 커서 선언 */
declare cur
/* 조회하고자 하는 select문 선언 */
cursor for select name, age from PEOPLE
/* 커서 오픈 */
open cur
/* 커서의 첫번째 행을 가지고 온다. */
fetch next from cur into @name,@age
/* 커서의 마지막 행이 될 때까지 반복작업을 실행하는 부분 (작업하고자 하는 내용을 아래 입력) */
while @@FETCH_STATUS = 0
/* 작업하고자 하는 내용 Begin */
begin
set @index = @index +1;
update PEOPLE
set age = age + @index
where name = @name
/* 작업하고자 하는 내용 END */
/* 커서의 다음 행을 가지고 온다. */
fetch next from cur into @name, @age
End
/* 커서 닫기 */
close cur
/* 커서 참조 제거 */
deallocate cur
ALTER 트리거
INSTREAD OF 트리거
CLR 트리거
https://blog.naver.com/isaac7263/222247607821
https://velog.io/@sweet_sumin/%EC%A0%80%EC%9E%A5-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80-Stored-Procedure - 저장 프로시저란
https://devkingdom.tistory.com/323 - 일반쿼리와 SP 예시
https://bonohubby.com/entry/Transact-SQLT-SQL-1-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%98%95%EC%8B%9D - T-SQL
https://gameserverengineer-k.tistory.com/7 - 실제 사용 예시
https://jeongkyun-it.tistory.com/76 - cursor
https://blog.naver.com/isaac7263/222247607821 - trigger
https://blog.naver.com/PostView.naver?blogId=gluestuck&logNo=221997860995&parentCategoryNo=&categoryNo=28&viewDate=&isShowPopularPosts=true&from=search - 프로시저 값 호출해보기
https://engineeringcode.tistory.com/408 - 프로시저를 호출