使用with解决传入入参可变的问题
多入参问题在选择入参时,入参数量可变,一般是通过动态SQL拼写where语句实现,这种方式即不安全,可读性又差,我们可以借助Oracle 的with语句和table函数来实现可变入参的功能。
-- Created on 2008-03-19 by ADMINISTRATOR declare -- Local variables here i integer; v_tab insu_table; begin select '31' bulk collect into v_tab from dual; p1(v_tab);
end;
|
create or replace type insu_table is table of varchar2(3); CREATE OR REPLACE PROCEDURE p1(p_tab insu_table) IS v_a VARCHAR2(20); BEGIN WITH data AS( SELECT * FROM TABLE(p_tab)) SELECT aab001 INTO v_a FROM ab15 WHERE aae140 IN (SELECT * FROM data) AND rownum = 1;
END;
|
通过with语句,将险种虚拟为数据集,在select中作为表访问即可。
分享到:
相关推荐
5. **不可变数据**:在JavaScript中,使用`Object.freeze()`和Immutable.js库可以帮助实现数据的不可变性,防止意外修改数据,提高代码可预测性和可测试性。 6. **惰性求值(Lazy Evaluation)**:仅在需要时才计算...
《你必须知道的495个C语言问题》以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预...
在iOS开发中,Variadic Arguments(可变参数)是一种允许函数接受不同数量参数的技术。它在C、C++和Objective-C等语言中被广泛使用,包括iPhone应用开发。本实例将深入探讨如何在Objective-C中使用Variadic ...
- 可变长度参数:允许传入任意数量的参数,如`*args`接收元组,`**kwargs`接收字典。 3. 默认值参数注意事项: - 默认值参数必须位于形参列表的最右侧。 - 如果默认值是可变对象(如列表、字典),那么默认值在...
这样看来,所有的问题都解决了,是吗? 1.4 新的64位机上的64位类型是什么样的? 指针声明 1.5 这样的声明有什么问题?char*p1,p2;我在使用p2的时候报错了。 1.6 我想声明一个指针,并为它分配一些空间,但却...
30. **EI_EXPOSE_STATIC_REP2**:将可变对象保存在静态字段中可能暴露内部静态状态,增加安全性风险。尽量避免在静态字段中存储可变对象。 31. **DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY**:对匿名数组执行 `...
tup.remove(2) # 元组不可变,没有remove方法 ``` 解决方法:确保使用正确的方法调用来操作数据结构。 **3.10 SystemExit** `SystemExit`异常通常发生在程序主动请求退出时,例如通过调用`sys.exit()`函数。例如...
国际标准组织(International Commission on Illumination,简称ICP)提出的一种算法就是为了解决这个问题,而PCL(Point Cloud Library)则是一个强大的开源库,提供了实现ICP算法和其他点云处理功能的工具。...
不可变对象意味着一旦创建,其状态不能改变,创建不可变对象通常使用私有构造函数和final字段。包含可变对象的不可变对象需要谨慎处理,因为可变内部对象可能破坏不可变性。 `equals()`和`hashCode()`通常一起重写...
- **匿名函数与递归**:探讨了匿名函数的应用场景,以及如何使用递归来解决问题。 - **函数作为对象**:介绍了函数可以作为变量存储和传递的特性。 - **存储函数**:讨论了如何将函数保存为变量或对象属性的方法。 -...
### React入门精要 #### 欢迎学习React! 本书旨在为初学者提供一个全面而深入的React入门指南。...随着实践的深入,你将能够更加熟练地运用这些技术来解决实际问题,并创建出既美观又实用的Web应用。
1. **sys.argv[] 的使用**:`sys.argv`是一个包含命令行参数的列表,其中`sys.argv[0]`是脚本名,之后的元素是传入的参数。例如,如果我们有以下命令行: ``` python script.py arg1 arg2 arg3 ``` 那么`sys....
在VB中创建线程需要使用CreateThread函数,该函数需要传入多个参数,如线程属性、堆栈大小、函数入口地址、参数等。该函数将返回一个线程句柄,可以用于控制线程的运行。 API函数 以下是VB创建多线程应用程序中...
{* 返回将指定字符s1用字符串s2替换后的字符串,可支持大小写敏感由CaseSensitive操作} {example: replace('We know what we want','we','I',false) = 'I Know what I want'} function Replicate(pcChar:Char; ...
### 关于Objective-C ...使用弱引用可以帮助解决这一问题。 #### Use Strong and Weak Declarations to Manage 使用强引用和弱引用来管理对象之间的关系。这有助于避免内存泄漏并确保对象的生命周期得到适当处理。
首先,`*args` 代表一个可变数量的位置参数列表,它会把传入的所有非关键字参数收集到一个元组(tuple)中。这意味着你可以传入任意数量的非关键字参数给函数,这些参数将按顺序被收集到 `args` 元组里。例如: ```...
为了诊断和解决问题,开发者应该仔细检查错误代码,并尝试重现问题。有时候,通过调整资源管理和优化代码逻辑可以解决这些问题。 #### 启用Direct3D调试信息 (Enabling Direct3D Debug Information) 启用Direct3D...
这就是为什么在replace()方法中加入全局标志“g”变得非常重要,如示例所示,使用正则表达式/\-/g可以替换掉所有的"-"字符。这个“g”标志告诉替换方法,要查找所有匹配项并替换之,而不是仅替换第一个找到的匹配项...
7. **`StringBuffer`类**:`StringBuffer`是可变的字符串容器,适合在多线程环境中进行字符串拼接,避免了频繁创建新字符串导致的性能问题。 8. **`StringTokenizer`类**:用于将字符串按照指定分隔符拆分成多个...