在Oracle用户定义的函数中编写select语句

the*_*_mr 2 sql oracle plsql function

我对Oracle SQL很陌生(尽管我编写了一些SQL)并且在函数中嵌入一个简单的SELECT语句时遇到了麻烦.感觉像SQL ABC,但我似乎无法得到它:(

我正在使用PL-SQL

这是我到目前为止所拥有的:

create or replace FUNCTION GET_GROUP_BY_ID RETURN VARCHAR2
AS my_result
BEGIN

  SELECT fav_group.name 
    INTO my_result 
    FROM fav_group 
   WHERE fav_group.id = 12345

  RETURN my_result;

END GET_GROUP_BY_ID;
Run Code Online (Sandbox Code Playgroud)

正如我所说,我通过查看谷歌上的代码示例尝试了很多上述代码的变体,但似乎无法正确.

OMG*_*ies 11

使用:

CREATE OR REPLACE FUNCTION GET_GROUP_BY_ID 
RETURN VARCHAR2 AS

  my_result FAV_GROUP.NAME%TYPE;

BEGIN

  SELECT fav_group.name 
    INTO my_result 
    FROM fav_group 
   WHERE fav_group.id = 12345;

  RETURN my_result;

END GET_GROUP_BY_ID;
Run Code Online (Sandbox Code Playgroud)

问题是my_result被用作变量,但从未声明过.

我使用%TYPE符号来声明变量,因此它使用与用于填充变量的列相同的数据类型.如果列数据类型发生变化,则变量会自动更改以适应 - 更改表后不会担心数据类型问题,除非您完全删除列.