PL/SQL에서 문자열의 작은 따옴표를 이스케이프 처리하여 PL/SQL 엔진이 작은 따옴표의 존재를 나타내서 문자열을 끝내지 않음을 나타낼 수 있도록해야합니다. 변수 sql_stmt
을 사용하려면 EXECUTE IMMEDIATE
호출과 별도의 단계에서 해당 변수에 값을 할당해야합니다.
이 여기에 동적 SQL을 사용하는 어떤 이유가 있지만,
DECLARE
sql_stmt VARCHAR2(200);
BEGIN
sql_stmt := 'update dos_visits set visit_type = ''IMV'' where visit_type = ''SMV''';
EXECUTE IMMEDIATE sql_stmt;
END;
가 표시되지 않습니다 (이 연속 2 따옴표가 아닌 단일 따옴표 문자 참고) 작동합니다. 그것은 일반적으로 당신은 아마 그 visit_type
값이 정말 하드 코딩하지 않는 한 쿼리에서 바인드 변수를 사용 싶어, 당신이 어떤 이유로 동적 SQL을 사용하려는 경우 정적 SQL
BEGIN
update dos_visits
set visit_type = 'IMV'
where visit_type = 'SMV';
END;
를 사용하는 것이 더 나을 .
DECLARE
sql_stmt VARCHAR2(200);
BEGIN
sql_stmt := 'update dos_visits set visit_type = :1 where visit_type = :2';
EXECUTE IMMEDIATE sql_stmt
USING 'IMV', 'SMV';
END;
변화 'SMV'에 "SMV"당신은 – Satya
@Satya을 통해, 자사의 정답 상점 약간 불분명하고 나던 핸들'IMV'을 먹으 렴해야합니다. 답변으로 게시하십시오. – paqogomez