oracle写一个函数,参数是一个ID串,返回名称串

本文介绍了如何使用SQL创建表格并插入数据,同时展示了通过自定义函数获取特定条件下的记录名称,涉及基本的数据库操作和函数应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE TABLE Test (
  id    nvarchar2(6),
  name  nvarchar2(10)
);
 
INSERT INTO Test values'id1''name1');
INSERT INTO Test values'id2''name2');
INSERT INTO Test values'id3''name3');
INSERT INTO Test values'id4''name4');
INSERT INTO Test values'id5''name5');
 
 
CREATE OR REPLACE FUNCTION Get_Test_Name( p_id_data  in NVARCHAR2) RETURN NVARCHAR2 AS
  TYPE   refcursor IS REF CURSOR;
  v_cursor  REFCURSOR;
  v_name   NVARCHAR2(10);
  v_result   NVARCHAR2(1000);
  v_id_dada  NVARCHAR2(1000);
  v_SQL  VARCHAR2(1000);
BEGIN
  v_id_dada := REPLACE(p_id_data, ','''',''');
  v_id_dada :=  '''' || v_id_dada ||  '''';
  v_result := '';
  v_SQL := 'SELECT name FROM Test WHERE ID IN (' || v_id_dada || ')';  
   
  -- 打开游标.
  OPEN v_cursor FOR v_SQL;
  LOOP
    -- 填充数据.
    FETCH v_cursor INTO v_name;
    -- 无数据时 退出循环.
    EXIT WHEN v_cursor%NOTFOUND;  
    v_result := v_result || v_name|| ',';
  END LOOP;
  -- 关闭游标.
  CLOSE v_cursor;
  v_result := TRIM(BOTH ',' FROM  v_result);
  RETURN v_result;
END;
/
 
COLUMN "A" FORMAT A10
COLUMN "B" FORMAT A15
COLUMN "C" FORMAT A20
COLUMN "D" FORMAT A25
 
 
SQL> SELECT 
  2    Get_Test_Name('id1')  A,
  3    Get_Test_Name('id1,id2')  B,
  4    Get_Test_Name('id1,id2,id3')  C,
  5    Get_Test_Name('id1,id2,id3,id4')  D
  6  FROM dual;
 
A          B               C                    D
---------- --------------- -------------------- -------------------------
name1      name1,name2     name1,name2,name3    name1,name2,name3,name4
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值