반응형
[MEMBER] 테이블
NAME | ID |
루피 | LUFFY |
뽀로로 | PORORO |
크롱 | CRONG |
포비 | POBY |
>> 예를 들어 외부에서 이름을 받아 해당하는 이름과 ID를 출력(반환)하는 프로시저를 생성하기
(한 행만 반환하는 경우)
CREATE PROCEDURE PS_GETID(
@NAME VARCHAR(10) --파라미터로 받을 값
@NAME_OUTPUT VARHCAR(10) OUTPUT, --반환할 값은 OUTPUT을 붙여준다.
@ID VARCHAR(10) OUTPUT --반환할 값은 OUTPUT을 붙여준다.
)
AS
BEGIN
SET NOCOUNT ON
--실행할 쿼리
SELECT @NAME_OUTPUT = NAME, @ID = ID FROM MEMBER WHERE NAME = @NAME FROM MEMBER
--@NAME을 매개변수로 @NAME_OUT과 @ID를 반환하기
SET NOCOUNT OFF
RETURN
END
--실행을 시켜 생성해준다.
* SET NOCOUNT ON : SELECT, INSERT, UPDATE, DELETE의 영향을 받은 행의 개수를 출력하지 않도록 설정.
>> 생성한 프로시저 확인
SP_HELPTEXT PS_GETID
>> 생성한 프로시저 수정
ALTER PROCEDURE PS_GETID(
-- 아래 내용은 같되 CREATE만 ALTER로 바꿔주면 됨
>> 생성한 프로시저를 사용하여 결과값을 변수에 담기
DECLARE @ID VARCHAR(10) --결과값을 받아올 변수 생성
DECLARE @NAME_OUTPUT VARCHAR(10) --결과값을 받아올 변수 생성
--프로시저 생성. 파라미터와 결과값변수 넘겨주기
--프로시저 결과가 변수에 담긴다.
EXEC PS_GETID 'LUFFY',@ID OUTPUT, @NAME_OUTPUT OUTPUT;
SELECT @ID, @NAME --EXEC 결과 조회
>> 프로시저에서 반환한 여러 행을 받을 경우
테이블 변수에 프로시저 결과를 담아 사용한다.
-- 여러 행을 반환하는 프로시저를 만든다.
CREATE PROCEDURE PS_GETTABLE
AS
BEGIN
SELECT * FROM MEMBER
END
DECLARE @TEMP TABLE(
NAME VARCHAR(10),
ID VARCHAR(10)
) --테이블 변수를 만든다.
-- 프로시저 결과를 테이블변수에 담는다.
INSERT INTO @TEMP EXEC PS_GETTABLE
-- 조회
SELECT * FROM @TEMP
여러개의 변수를 프로시저 파라미터로 넘기고 싶은 경우
위와 비슷하게 테이블 변수를 매개변수로 넘겨보자...
반응형
'코딩 관련 > DB' 카테고리의 다른 글
[MSSQL] ROW_NUMBER OVER PARTITION BY ORDER BY (0) | 2022.11.24 |
---|---|
[MSSQL] ROW 합치기 / 컬럼 합치기 / 컬럼 내용 합치기 / 문자열 합치기 / group concat / listagg (0) | 2022.10.25 |
[MSSQL] TABLE 특정 행만 select하기 (0) | 2022.10.17 |
[MSSQL] IDENTITY_INSERT 에러 (0) | 2022.10.11 |
[oracle] invalid host/bind variable name (0) | 2021.10.29 |