2010-06-29 2 views
1

오라클은 스토어드 프로 시저 (PL/SQL)를 작성한 최초의 제품 중 하나이지만 DB2 이외의 RDBMS 제품이 1998 년 이후 SQL/PSM 또는 그 하위 세트를 구현 한 Informix (SPL)를 사용하고 있습니다. 어떤 RDBMS가 procs 다음 예와 같이? :SQL의 구현에는 PSM과 같은 기능이 있습니까?

CREATE OR REPLACE FUNCTION foo1(a integer) 
RETURNS void AS $$ 
    CASE a 
    WHEN 1, 3, 5, 7, 9 THEN 
     PRINT a, 'is odd number'; 
    WHEN 2, 4, 6, 8, 10 THEN 
     PRINT a. 'is odd number'; 
    ELSE 
     PRINT a, 'isn't from range 1..10'; 
    END CASE; 
$$ LANGUAGE plpgpsm; 

답변

1

DB2만이 PSM, AFAIK에 가깝습니다. Sybase는 매우 초기에 Transact-SQL을 사용했습니다. 마이크로 소프트는 그것을 빌렸다. 체크 아웃을하는 어둠의 세 마리는 MySQL, PostgreSQL 및 Ingres입니다. 그러나, 나는 그들의 코드를 보았을 때 그들 중 누구라도 PSM에 가깝다고 생각한 것을 기억하지 못한다.

그러나 'mysql psm'에 대한 Google 검색은 MySQL 5.x 및 PostgreSQL 8.2가 표준에 가까운 PSM 양식을 지원함을 나타냅니다. ('ingres psm'에 대한 검색은 Ingres의 PSM이 '부분 정렬 병합'조인 기술임을 보여줍니다.)

1

각 제품에는 저장된 모듈의 자체 구현이 포함되어 있지만 대부분 유사한 것 같습니다. 예를 들어, 다음과 같이 Oracle PL/SQL에서 예제를 다시 작성할 수 있습니다.

CREATE OR REPLACE PROCEDURE foo1(a integer) AS 
BEGIN 
    CASE 
    WHEN a IN (1, 3, 5, 7, 9) THEN 
     DBMS_OUTPUT.PUT_LINE(a || ' is odd number'); 
    WHEN a IN (2, 4, 6, 8, 10) THEN 
     DBMS_OUTPUT.PUT_LINE(a || ' is even number'); 
    ELSE 
     DBMS_OUTPUT.PUT_LINE(a || ' isn''t FROM RANGE 1..10'); 
    END CASE; 
END; 

공유하고 즐기십시오.

관련 문제