系统有个需求 业务表中某一个字段存的 代码表的id集合,现在查询的时候要返回代码表中的文本,
所以想到写一个function 在select语句中调用,百度了下,一开始没找到,
后来在百度知道提交了一个问答, 后推荐相似问题中找到了解答方法路径:,百度知道地址, .
由于他用的是 mssql的写法,需要修改下字段类型:参照他的写法将所查询的表,字段,都使用动态sql构造,写法如下:
CREATE OR REPLACE FUNCTION F_GetTableText(t_table in VARCHAR2 , p_id in VARCHAR2, caption in VARCHAR2, p_id_data in VARCHAR2) RETURN VARCHAR2 AS TYPE refcursor IS REF CURSOR; v_cursor REFCURSOR; v_name VARCHAR2(10); v_result VARCHAR2(1000); v_id_dada VARCHAR2(1000); v_SQL VARCHAR2(1000); BEGIN --1 传入的where in 条件需要处理成有效的 'a,b' ---->转换--> 'a','b' v_id_dada := REPLACE(p_id_data, ',', ''','''); v_id_dada := '''' || v_id_dada || ''''; v_result := ''; --生成 动态sql 类似 select catption from table where id in('',''); v_SQL := 'SELECT '||caption||' FROM '||t_table||' WHERE '||p_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 F_GetTableText;
根据根据 id查询条件 返回所查表的文本字段,
相关推荐
在Oracle数据库中,函数是一类预定义的子程序,它可以对输入参数执行运算,并返回一个结果值。Oracle提供了一系列的函数,用于处理不同类型的数据,如字符串、数字、日期和时间等。下面按照文档所提供的内容,详细...
### 一个选查询后插入到一个临时表的Oracle函数 #### 概述 在Oracle数据库环境中,函数是一种非常有用的数据库对象,它允许开发者封装复杂的逻辑并返回特定的结果。本文将详细解析一个特定的Oracle函数——`NS_...
- SQL Server的`@@IDENTITY`获取最后一个插入的ID,Oracle使用`LAST_INSERT_ID()`(在PL/SQL块中)或`CURRVAL()`(在SQL查询中)。 - `VERSION()`函数在两个数据库中用于获取系统版本信息。 8. **游标和循环** ...
sys_context 函数是 Oracle 提供的一个获取环境上下文信息的预定义函数。该函数用来返回一个指定 namespace 下的 parameter 值。该函数可以在 SQL 和 PL/SQL 语言中使用。 sys_context 函数的基本语法为:`SYS_...
DBLink(Database Link)是一种允许在一个Oracle数据库实例中访问另一个Oracle数据库实例中的对象的技术。DBLink的应用场景非常广泛,例如在不同的数据库实例之间复制数据、合并多个数据库中的数据等。 #### 七、...
这个“Oracle函数大全”CHM文件将提供每个函数的详细描述、语法、参数、返回值和示例,是学习和查询Oracle函数的宝贵资源。无论你是初学者还是经验丰富的开发者,都能从中受益匪浅,提升你在Oracle数据库管理中的...
6. **ROW_NUMBER()**:这是一个非常简单的函数,为每一条分组记录返回一个数字,可以看作是行号。 #### 二、示例演示 接下来,通过一个具体的例子来说明RANK()与DENSE_RANK()的使用情况。假设我们有一个销售数据表...
在Oracle数据库系统中,`SYS_CONTEXT`函数是一个非常实用的功能,它允许用户从不同的上下文中检索信息。在Oracle9.2版本中,这个函数提供了一种灵活的方式来访问与当前会话或系统环境相关的各种属性。下面,我们将...
这个函数接受一个员工ID作为参数,返回该员工的姓名。 而创建一个存储过程可能如下所示: ```sql CREATE OR REPLACE PROCEDURE update_salary(emp_id NUMBER, new_salary NUMBER) IS BEGIN UPDATE employees SET ...
4)、创建一个函数,以客户号为参数,返回该客户可以获得的礼品名称。 5)、创建一个函数,以图书号为参数,统计该图书被订购的总数量。 湖南文理学院实验报告 课程名称 大型数据库技术 实验名称 五、PL/SQL触发器 ...
该函数接受一系列参数对(条件与对应的返回值),并提供一个默认值,当所有条件都不满足时返回。 **语法**: ``` DECODE(condition, value1, result1, value2, result2, ..., default_value) ``` **示例**: ...
- 示例:`LAG(salary, 1, 0) OVER (ORDER BY hire_date)`,获取每个员工的前一个员工的薪水,如果没有前一个员工,则返回0。 #### 五、Oracle分析函数的高级用法 除了基本的使用方法外,Oracle分析函数还支持更...
### Oracle 创建函数和包 ...过程主要用于执行一系列操作而不返回值,而函数则用于执行计算并返回一个结果。通过这些基本概念的学习,可以帮助 Oracle 9i 的初学者更好地理解和掌握存储过程的编写技巧。
这里只需要一个参数`id`,因为我们要根据ID来确定要删除的记录。与插入类似,创建连接,定义SQL删除语句,添加参数,执行SQL并检查受影响的行数以确认操作是否成功。 3. **修改(Update)**: 更新操作需要根据...
CONVERT - 将源字符串从一个字符集转换到另一个字符集 - **语法**: `CONVERT(source, dstcharset, srccharset)` - **参数**: - `source`: 源字符串。 - `dstcharset`: 目标字符集。 - `srccharset`: 源字符集。...
例如,`to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')`,它需要一个格式模式来正确解析输入字符串。 - `TO_CHAR` 函数则相反,将日期转换为字符串。如示例所示,可以提取日期的年、月、日、小时、分钟和...
- `concat(str1, str2,...)`:将多个字符串参数连接成一个新的字符串。 2. **字符操作函数**: - `upper(char_expr)`和`lower(char_expr)`:分别将字符串转化为大写和小写。 - `UCase(string)`和`LCase(string)`...
2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat 3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行...
`Form_builder`是Oracle Developer中的一个组件,专门用于设计和构建图形用户界面(GUI)的表单。本篇文档主要介绍`Form_builder`中的一些内置函数,对于Oracle Developer的初学者来说具有一定的学习价值。 1. `...
16. 在 Oracle 中,PL/SQL 块中定义了一个带参数的游标:CURSOR emp_cursor(dnum NUMBER) IS SELECT sal, comm FROM emp WHERE deptno = dnum;那么正确打开此游标的语句是? 答案:a) OPEN emp_cursor(20); 这是...