일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 설치
- springboot
- jsp 내부객체
- 스프링
- Oracle
- SESSION
- 자바스크립트
- 제이쿼리
- 이클립스
- Eclipse
- 오라클
- java
- Spring
- 깃허브
- 필터체인
- 버튼
- html
- jsp
- 설정
- 깃허브 간단요약
- MySQL
- jquery
- 자바
- 마이바티스
- 알고리즘
- jstl
- 셋업
- EL태그
- 면접
- 폼태그
- Today
- Total
은은하게 코드 뿌시기
MSSQL - sp_executesql / Oracle 본문
sp_executesql은 SQL Server에서 동적 SQL 문을 실행하는 데 사용되는 시스템 저장 프로시저입니다.
동적 SQL은 실행 중에 문자열로 구성된 SQL 문을 생성하고 실행하는 것을 의미합니다. 예를 들어, 조건에 따라 다른 WHERE 절을 사용하는 쿼리를 작성하고자 할 때, 동적 SQL을 사용할 수 있습니다.
sp_executesql을 사용하면 동적 SQL을 실행하기 전에 입력 매개 변수의 데이터 형식을 정의할 수 있습니다. 이렇게 하면 SQL Server가 매개 변수를 문자열로 변환하기 전에 데이터 형식을 검사할 수 있습니다. 이렇게 하면 SQL Server에서는 데이터 형식 변환 오류를 방지할 수 있습니다.
DECLARE @SQLString nvarchar(500); DECLARE @ParmDefinition nvarchar(500); DECLARE @City nvarchar(75); SET @City = N'London'; SET @SQLString = N'SELECT * FROM Person.Address WHERE City = @CityParm'; SET @ParmDefinition = N'@CityParm nvarchar(75)'; EXECUTE sp_executesql @SQLString, @ParmDefinition, @CityParm = @City; |
이 쿼리는 @City 매개 변수를 사용하여 City 열에 대한 조건을 동적으로 생성하고 실행합니다. sp_executesql을 사용하여 @City 매개 변수의 데이터 형식을 nvarchar(75)로 정의하였기 때문에 SQL Server에서는 데이터 형식 변환 오류를 방지할 수 있습니다.
오라클로 변환하려면 어떻게 해야할까?
오라클에서는 EXECUTE IMMEDIATE문이 문자열을 실행하는 데 사용되며, 실행될 쿼리문에 바인드 변수를 포함할 수 있습니다. EXECUTE IMMEDIATE는 문자열을 파싱할 때 자료형을 인식하기 때문에, 자동으로 형변환을 수행합니다. 따라서 오라클에서는 sp_executesql과 같은 함수가 필요하지 않습니다.
INTO 구문은 결과를 저장할 변수를 지정합니다. USING 구문은 바인드 변수에 값을 바인딩합니다
DECLARE SQLString VARCHAR2(500); City VARCHAR2(75) := 'London'; Result SYS_REFCURSOR; BEGIN SQLString := 'SELECT * FROM Person.Address WHERE City = :CityParm'; OPEN Result FOR SQLString USING City; -- 여기서 Result 변수를 사용하여 결과 처리 END; |
저장할 변수가 여러개 인경우.. DECLARE SQLString VARCHAR2(500); City VARCHAR2(75) := 'London'; Street VARCHAR2(100); ZipCode VARCHAR2(10); BEGIN SQLString := 'SELECT Street, ZipCode FROM Person.Address WHERE City = :CityParm'; EXECUTE IMMEDIATE SQLString INTO Street, ZipCode USING City; -- 여기서 Street, ZipCode 변수를 사용하여 결과 처리 END; |
'Database -Mysql,Oracle' 카테고리의 다른 글
NULL일때 다른 컬럼 조회하기 / 수정일/ 등록일 (0) | 2024.06.11 |
---|---|
MS SQL 쿼리 - 오라클 쿼리로 바꾸기/ 마이그레이션/ INSERT 쿼리로 긴 텍스트를 집어넣어야 할때! / NCLOB (2) | 2023.05.04 |
[DB] 롤 - 오라클 (0) | 2022.11.09 |
[DB] 권한관리 - 오라클 (0) | 2022.11.09 |
[DB] 사용자관리 - 오라클 (0) | 2022.11.09 |