【问题标题】:how i call this function in oracle database? [duplicate]我如何在 oracle 数据库中调用此函数? [复制]
【发布时间】:2021-04-30 07:50:42
【问题描述】:
CREATE OR REPLACE FUNCTION PRODUCT(PRODUCT_CODE PLS_INTEGER ) 
RETURN NUMBER
IS
    PRODUCT NUMBER:=0;
    BEGIN
       SELECT  PRODUCT_CODE INTO PRODUCT FROM PGIM_PRODUCT
       WHERE PRODUCT_CODE=PROD_DESC ;
    RETURN PRODUCT;
END PRODUCT;

【问题讨论】:

  • “调用”是过程的术语。您的函数必须以与使用任何常见内置函数相同的方式在查询中使用。 SELECT id, PRODUCT(id) AS code FROM ...
  • 附言。你真的提供描述(你检查 PGIM_PRODUCT.PROD_DESC 列)作为 PRODUCT_CODE(参数名称)吗?

标签: mysql sql oracle


【解决方案1】:

如果你想在 PL/SQL 块中调用

DECLARE
return_val NUMBER;
BEGIN
return_val := product(101);
END;

如果你想在查询中调用它

SELECT product(100) FROM dual;

如果名称与您正在调用的架构不同,请限定名称。

编辑:

"在用户定义函数的帮助下创建单个查询......在用户定义函数中传递一个参数,即 product_code 并从表 PGIM_PRODUCT 中返回 product_desc"

如果你想要这个,那么你的查询是错误的

CREATE OR REPLACE FUNCTION PRODUCT(PRODUCT_CODE_IN PLS_INTEGER ) 
RETURN varchar2
IS
    PRODUCT_DESC varchar2(32767);
    BEGIN

       SELECT  PRODUCT_DESC INTO PRODUCT_DESC FROM PGIM_PRODUCT
       WHERE PRODUCT_CODE =  PRODUCT_CODE_IN;

    RETURN PRODUCT_DESC;
END PRODUCT;

【讨论】:

  • PGIM_PRODUCT 是单独的表,我想要 product_DESC 使用 product_code 参数。 product_DESC 是 PGIM_PRODUCT 中存在的列名
  • 你能解释一下吗?
  • 你想用这个做什么 - SELECT PRODUCT_CODE INTO PRODUCT FROM PGIM_PRODUCT WHERE PRODUCT_CODE=PROD_DESC ;
  • 在用户定义函数的帮助下创建单个查询查询......在用户定义函数中传递了一个参数,即 product_code 及其从表 PGIM_PRODUCT 中返回 product_desc
  • 错误第 13 行,第 8 列,第 13 行结尾,第 12 列结尾,找到 'FETCH',期待:; -or- FOR ORDER -or- INTERSECT MINUS UNION -or- CONNECT GROUP HAVING START -or- OR -or- AND -or- || -or- / -or- ** -or- (+) -or- % 。 [ -or- : @CASE CONNECT_BY_ROOT 十进制数 EXISTS FALSE float integer NEW PRIOR SQL TRUE -or- ( * + - AT CONTINUE CURSOR DAY identifier MOD MODEL MULTISET NOT NULL REM string THE WHEN YEAR
猜你喜欢
  • 1970-01-01
  • 2020-02-09
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 2011-08-19
  • 2020-08-27
  • 2011-02-25
相关资源
最近更新 更多