이 섹션은 간의 차이점을 설명합니다.PostgreSQL's메이저 토토 사이트/pgsql언어와 Oracle 'sPL/SQL언어 의 응용 프로그램Oracle® toPostgreSQL.
메이저 토토 사이트/pgsqlPL/SQL과 유사합니다 여러 측면에서.PL/SQLto메이저 토토 사이트/pgsqlare :
매개 변수에 대한 기본값은 없습니다PostgreSQL.
당신은 다음과 같은 매개 변수 이름을 사용할 수 없습니다. 함수에서 참조되는 열.function_name.paramater_name.
당신은에서 함수 이름을 과부하 할 수 있습니다.PostgreSQL. 이것은 종종 작동하는 데 사용됩니다
커서의 필요 없음메이저 토토 사이트/pgsqlfor진술. (보다예제 36-6.)
inPostgreSQL기능 본문은 문자열 문자로 작성해야합니다.섹션 36.2.1.
패키지 대신 스키마를 사용하여 구성하십시오 그룹으로의 기능.
패키지가 없으므로 패키지 레벨이 없습니다 변수.
예제 36-5간단한 기능을 포트하는 방법을 보여줍니다PL/SQLto메이저 토토 사이트/pgsql.
예 36-5. 에서 간단한 기능 포팅PL/SQLto메이저 토토 사이트/pgsql
여기가 있습니다Oracle PL/SQL기능 :
함수 작성 또는 교체 CS_FMT_BROWSER_VERSION (V_NAME VARCHAR, v_version varchar)
이 기능을 살펴보고 차이점을 보자 에 비해메이저 토토 사이트/pgsql:
return함수 프로토 타입 (기능 본문이 아님)이됩니다반환inPostgreSQL. 또한,isas, 그리고 당신은 a를 추가해야합니다.언어절로메이저 토토 사이트/pgsql유일한 기능 언어는 아닙니다.
inPostgreSQL, 기능 본문은 문자열 문자로 간주됩니다./Oracle 접근법에서.
오류 표시명령 존재하지 않음PostgreSQL, 오류 가보고되어 필요하지 않습니다
이것은이 기능이 포팅되었을 때 어떻게 보이는지입니다.PostgreSQL:
함수 작성 또는 교체 CS_FMT_BROWSER_VERSION (V_NAME VARCHAR, v_version varchar)
예제 36-6다른 것을 생성하는 함수를 포트하는 방법을 보여줍니다 기능 및 다음 인용 문제를 처리하는 방법.
예 36-6. 생성하는 함수를 포팅합니다PL/SQLto메이저 토토 사이트/pgsql
다음 절차는 a에서 행을 잡습니다.select진술 및 큰 기능을 구축합니다 결과와 함께if진술, 효율성을 위해.for루프.
이것은 Oracle 버전입니다 :
절차 작성 또는 교체 CS_UPDATE_REFERRER_TYPE_PROC IS Cursor referrer_keys입니다
이 기능이 어떻게 끝나는 지PostgreSQL:
함수 생성 또는 교체 CS_UPDATE_REFERRER_TYPE_PROC () voids는 $ func $로 void을 반환합니다선언하다
함수의 본문이 어떻게 별도로 구축되는지 알 수 있습니다. 그리고 통과quote_literalTO 인용 표시가 두 배로 늘어납니다.referrer_key.key_string필드. (우리는in항상 신뢰할 수 있습니다 BEhost, 도메인또는URL그러나referrer_key.key_string무엇이든, 특히 그것은 달러 표지판을 포함 할 수 있습니다.) 이것referrer_key.key_string또는referrer_key.referrer_type견적을 포함하십시오 점수.
예제 36-7out매개 변수 및 문자열 조작.PostgreSQLa 내장instr
기능이지만, 당신 다른 기능의 조합을 사용하여 하나를 만들 수 있습니다.in섹션 36.11.3a메이저 토토 사이트/pgsql구현instr
포팅에 사용할 수 있습니다 더 쉬운.
예 36-7. 문자열로 절차를 포팅합니다out매개 변수PL/SQLto메이저 토토 사이트/pgsql
다음OraclePL/SQL 절차는 URL을 구문 분석하고 몇 가지를 반환하는 데 사용됩니다. 요소 (호스트, 경로 및 쿼리).
이것은 Oracle 버전입니다 :
절차 작성 또는 교체 CS_PARSE_URL ( Varchar의 v_url,
여기에 가능한 번역이 있습니다메이저 토토 사이트/pgsql:
함수 작성 또는 교체 CS_PARSE_URL ( Varchar의 v_url,
이 기능은 다음과 같이 사용할 수 있습니다.
선택 *에서 CS_PARSE_URL ( 'http://foobar.com/query.cgi?baz');
예제 36-8수많은 사용 절차를 포트하는 방법을 보여줍니다 Oracle에 특화된 기능.
예 36-8. 절차 포팅PL/SQLto메이저 토토 사이트/pgsql
오라클 버전 :
절차 작성 또는 교체 CS_CREATE_JOB (v_JOB_ID Integer)는 IS입니다 a_running_job_count 정수;(1)시작 독점 모드의 잠금 테이블 CS_JOBS;(2)cs_jobs에서 a_running_job_count로 count (*)를 선택하십시오. a_running_job_count 0 인 경우(3)rase_application_error (-20000, '새 직업을 만들 수 없음 : 현재 일자리가 실행 중입니다.'); 끝 IF;
이와 같은 절차는 쉽게 변환 할 수 있습니다PostgreSQL함수 반환void. 이 절차는
이것은 우리 가이 절차를 포트 할 수있는 방법입니다메이저 토토 사이트/pgsql:
함수 작성 또는 교체 CS_CREATE_JOB (v_JOB_ID 정수)는 void를 $$로 반환합니다.선언하다(1)END IF; cs_active_job에서 삭제;(2)- 이미 존재하는지 걱정하지 마십시오 끝;이 절차 사이의 주요 기능적 차이 그리고 Oracle에 해당하는 것은에 대한 독점적 잠금입니다.CS_JOBS테이블은 전화 트랜잭션이 완료됩니다.
이 섹션은 언제 볼 수있는 몇 가지 다른 사항을 설명합니다. 포팅 오라클PL/SQL함수PostgreSQL.
in메이저 토토 사이트/pgsql, 언제 예외는에 의해 잡혔다.예외조항, 블록 이후 모든 데이터베이스 변경시작자동으로 롤백됩니다. 즉,
시작 SavePoint S1;
사용하는 Oracle 절차를 번역하는 경우SavePointand롤백으로이 스타일에서는 작업이 쉽습니다. 그냥 생략SavePointand롤백으로. 절차가있는 경우SavePointand롤백으로다른 방식으로 일부 실제 생각이 필요합니다.
메이저 토토 사이트/pgsql버전execute와 유사하게 작동합니다PL/SQL버전이지만 있습니다 사용하는 것을 기억하려면quote_literal
andQUOTE_INDEN
설명대로섹션 36.6.5. 유형의 구성execute 'select * from $ 1';작동하지 않습니다 이 기능을 사용하지 않는 한.
PostgreSQL두 가지를 제공합니다 실행 최적화를위한 기능 생성 수정 자 :"변동성"(함수 여부 동일한 인수가 주어지면 항상 같은 결과를 반환합니다)"엄격함"( 인수가 null이면 함수를 반환합니다).기능 생성자세한 내용 참조 페이지.
이러한 최적화 속성을 사용할 때기능 생성진술이 보일 수 있습니다 다음과 같은 것 :
함수 생성 foo (...)는 정수를 $$로 반환합니다...
이 섹션에는 세트에 대한 코드가 포함되어 있습니다 오라클 호환instr
기능 포팅 노력을 단순화하는 데 사용할 수 있습니다.
-- Oracle의 상대를 모방하는 기기 기능