Какие реализации SQL имеют PSM-подобную функциональность? - PullRequest
1 голос
/ 29 июня 2010

Хотя Oracle является одним из первых, кто создал хранимые процедуры (PL / SQL), затем Informix с (SPL), какие продукты СУБД, кроме DB2, внедрили SQL / PSM или его подмножество после 1998 года? .. Какие СУБД могут поддерживать как в следующем примере?:

 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;

Ответы [ 2 ]

1 голос
/ 29 июня 2010

Кажется, что каждый продукт содержит собственную реализацию хранимых модулей, но большинство из них довольно похожи. Например, ваш пример может быть переписан в 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;

Делись и наслаждайся.

1 голос
/ 29 июня 2010

Только DB2 близка к PSM, AFAIK.У Sybase был Transact-SQL очень рано;Microsoft позаимствовала это.Возможно, есть три темные лошадки: MySQL, PostgreSQL и Ingres.Тем не менее, я не помню, чтобы кто-то из них был близок к PSM, когда я смотрел на их код.

Однако поиск в Google по запросу «mysql psm» предполагает, что MySQL 5.x и PostgreSQL 8.2Поддержка формы PSM, близкой к стандартной.(Поиски «ingres psm» показывают, что PSM в Ingres - это метод объединения «Partial Sort Merge».)

...