Oracle数据建模器:如何创建prodcedure和函数

时间:2015-12-22 22:03:11

标签: oracle

如何创建程序,例如:

    Create PROCEDURE il_klub as (
      select
        sum(krk.kluby_id),
        r.nazwa
      FROM
        rozgrywki_klubowe r,
        kluby_roz_klub krk
      WHERE
        r.id = krk.rozgrywki_klubowe_id
      GROUP by r.nazwa
      )

和功能,例如:

DECLARE @mistrz TABLE (nazwa varchar, rozgrywki varchar)
INSER INTO @mistrz (nazwa, rozgrywki)
select
k.nazwa, r.nazwa
from
kluby k,
rozgrywki_klubowe r,
kluby_roz_klub krk,
historia_roz_klub hrk,
where
k.id = krk.kluby_id and k.id = hrk.kluby_id and r.id = krk.rozgrywki_klubowe_id 
  and r.id = hrk.rozgrywki_klubowe_id 
  and hrk.miejsce =1 and r.system like 'ligowy'

Select * from @mistrz

在Oracle SQL Data Modeler中

1 个答案:

答案 0 :(得分:0)

过程声明的语法是

CREATE OR REPLACE PROCEDURE IL_KLUB AS
  vSUM_KLUBY  KLUBY_ROZ_KLUB%TYPE;
  vNAZWA      ROZGRYWKI_KNUBOWE.NAZWA%TYPE;
BEGIN
  select sum(krk.kluby_id),
         r.nazwa
    INTO vSUM_KLUBY,
         vNAZWA
    FROM rozgrywki_klubowe r,
         kluby_roz_klub krk
    WHERE r.id = krk.rozgrywki_klubowe_id
    GROUP by r.nazwa;
END IL_KLUB;

这个程序显然不是特别有用,因为它没有对SELECT的结果做任何事情,并且可能会引出编译警告。但那就是你如何宣布它。

函数以类似的方式定义,但您还需要定义返回类型,然后返回一个值:

CREATE OR REPLACE FUNCTION IL_KLUB_NAZWA
  RETURN ROZGRYWKI_KNUBOWE.NAZWA%TYPE
AS
  vSUM_KLUBY  KLUBY_ROZ_KLUB%TYPE;
  vNAZWA      ROZGRYWKI_KNUBOWE.NAZWA%TYPE;
BEGIN
  select sum(krk.kluby_id),
         r.nazwa
    INTO vSUM_KLUBY,
         vNAZWA
    FROM rozgrywki_klubowe r,
         kluby_roz_klub krk
    WHERE r.id = krk.rozgrywki_klubowe_id
    GROUP by r.nazwa;

  RETURN vNAZWA;
END IL_KLUB_NAZWA;

Oracle PL/SQL Language Reference here

Oracle SQL Language Reference here

祝你好运。