Oracle数据建模师:如何创建产品和功能

Oracle数据建模师:如何创建产品和功能,oracle,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 )

如何创建程序,例如:

    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中,过程声明的语法为

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;

祝你好运