表1
ID
----------
1
2
3
4
5
表2
ID Desc
------------------------------
A1 Apple
A2 Pear
A3 Orange
我正在尝试在Oracle中创建一个Function,以便它添加前缀' A'在表1中,之后我想在表2中查找以返回DESC。它必须是一个功能。
谢谢!!!
答案 0 :(得分:0)
我不确定你的问题 - 你是否想要达到这样的目标: -
startForeground
答案 1 :(得分:0)
你在尝试这样的事吗?
CREATE OR replace FUNCTION replace_value (table_name IN VARCHAR2,
input_id IN INTEGER)
RETURN VARCHAR2
AS
v_desc VARCHAR(20);
BEGIN
SELECT descr
INTO v_desc
FROM table2
WHERE id = 'A' || input_id
AND ROWNUM = 1; -- only needed if there are multiple rows for each id.
RETURN v_desc;
END replace_value;
您还可以为NO_DATA_FOUND
或INVALID_NUMBER
答案 2 :(得分:0)
您可以使用以下方法创建此类功能:
Create or Replace Function Get_Fruit( i_id table2.description%type )
Return table2.description%type Is
o_desc table2.description%type;
Begin
for c in ( select description from table2 where id = 'A'||to_char(i_id) )
loop
o_desc := c.description;
end loop;
return o_desc;
End;
其中
cursor
而无需包含异常处理
而不是select into
条款。使用table_name.col_name%type
声明数据类型
参数或变量生成列的相关数据类型
动态。即那些能够依赖于数据的类型
相关栏目。
desc
等保留关键字不能用作列名
表格,除非用双引号("desc"
)
要调用该功能,可能首选以下内容:
SQL> set serveroutput on
SQL> declare
2 i_id pls_integer := 1;
3 o_fruit varchar2(55);
4 begin
5 o_fruit := get_fruit( i_id );
6 dbms_output.put_line( o_fruit );
7 end;
8 /
Apple
PL/SQL procedure successfully completed