plsql相关内容
如何使用PL/SQL获取服务器的IP v4? UTL_INADDR.GET_HOST_ADDRESS给我IPv6,而我需要IPv4 我在服务器上禁用了IPv6,但仍然为我带来了“隧道适配器Teredo Tunneling Pseudo-Interface"的IPv6! 我正在Windows 2008 R2 Server上使用Oracle 11g数据库 解决方案 UTL_INADDR
..
我只是想知道是否有人可以提供帮助,所以我有两个用于更改表(添加额外字段)的PLSQL语句,它们如下: -- Make GC_NAB field for Next Action By Dropdown begin if 'VARCHAR2' = 'NUMBER' and length('VARCHAR2')>0 and length('')>0 then execute immediat
..
我在Oracle中有一个使用varchar2参数的过程.基于该参数的值,我需要定义一个游标.游标将根据参数的值在不同的表上进行操作. 我想做以下类似的事情,但是它在CURSOR定义代码段中引发了错误.有什么想法吗? PROCEDURE GET_RECORDS(v_action IN VARCHAR2) IS CURSOR get_records IS IF(v_actio
..
对于简单的事情,最好在不占用CPU较多或regexp_replace可行的前提下使用translate函数? 此问题来自如何在Oracle REGEXP_REPLACE函数中将括号替换为连字符? 解决方案 我认为您正在遇到简单的优化. regexp表达式的计算是如此昂贵,以至于结果将被缓存,以期将来再次使用.如果您实际上使用不同的字符串进行转换,您会发现适度的翻译自然是更快的,因为它
..
我正在寻找一条UPDATE语句,它将仅更新单个重复的行,而其余的(重复的行)保持不变 是使用ROWID或其他工具或其他元素在Oracle SQL或PL/SQL中使用? 以下是可与之一起使用的示例duptest表: CREATE TABLE duptest (ID VARCHAR2(5), NONID VARCHAR2(5)); 运行一个INSERT INTO duptest VAL
..
在Oracle中,是否有一个函数可以计算两个日期之间的差异?如果不是,是否可以显示以小时和分钟为单位的两个日期之间的时差? 查询: SELECT Round(max((EndDate - StartDate ) * 24), 2) as MaximumScheduleTime, Round(min((EndDate - StartDate) * 24), 2) as M
..
我有一列用逗号分隔的值,例如6,7,99.3334. 我需要编写一个PL SQL过程,该过程将分别为我提供这些值.列的长度为40. 有人可以帮我吗? 解决方案 像这样的事情? with my as ( select '6,7,99.3334' str from dual ) select regexp_substr(my.str,'[^,]+',1,le
..
我的问题是如何通过SQL查询或任何其他内部/外部工具找到内部oracle软件包依赖项.甚至有可能还是我应该仔细阅读代码并找出自我? 示例: 我有一个软件包,其中包含4个过程A,B,C,D和1个函数F. A是运行B和C过程的'main'过程. B和C过程使用功能F. 过程D是独立的(在elswhere中使用). 现在,我想获得这样的结果: STATUS PRC
..
在Oracle 10g上,我们需要将视图中的记录插入表中,以支持本身没有sort或ORDER选项的哑客户端应用程序.有什么方法可以控制我们的INSERT语句将记录添加到目标表的顺序? 解决方案 您可以不可靠地控制Oracle在没有ORDER BY的情况下以什么顺序检索表的行. 此外,如果没有/*+APPEND*/提示,Oracle会将行实际存储在堆空间中的堆表中,该空间可能不在表的末
..
我正在使用存储过程使用游标将数据插入到临时表中. 此过程将动态查询存储在变量中,以挂载insert/update命令. 这里是代码(不是完整的查询,为了方便阅读,我删掉了一些部分): FOR VC2 IN (SELECT C.OBJETIVO, C.AUDITORIA , C.NOME,
..
我是SQL Server用户,并且我有一个使用Oracle的小项目,因此,我试图了解Oracle的某些特殊性,我认为我需要一些帮助以更好地了解以下情况: 我想在创建临时表之前测试它是否存在,所以在这里有以下代码: DECLARE table_count INTEGER; var_sql VARCHAR2(1000) := 'create GLOBAL TEMPORARY table
..
如何使用一年中的所有天数创建View. view应该用从JAN-01到Dec-31的日期填充.我如何在Oracle中做到这一点? 如果当前年份有365天,则view应该有365行带日期.如果当前年份有366天,则view应该有366行带日期.我希望view具有类型为DATE的单列. 解决方案 这个简单的视图可以做到: create or replace view year_da
..
假设您执行以下步骤: PROCEDURE f (param VARCHAR2) IS var VARCHAR2(10); BEGIN var := 'hi'; END f; 我想了解为什么var需要指定的长度,但param不需要.我很难在oracle文档中找到有关此信息. 解决方案 "Oracle数据库从调用过程的环境中得出参数的长度,精度和小数位数." 请查
..
我正在考虑使用 AUTONOMOUS_TRANSACTION语法进行批处理过程中的某些登录.有人对这个有经验么 ?如果是这样,任何利弊将不胜感激. 解决方案 IMO自主事务特别适用于日志记录:它们独立于主会话运行,这意味着您可以在表中编写,提交或回滚更改,而不会影响主记录.交易. 它们还增加了很少的开销:如果您运行大型语句并在每个语句之间添加自主事务,则性能成本可以忽略不计.
..
是否有一个工具(最好是免费的)将Oracle的PL/SQL存储过程语言转换为Postgresql的PL/pgSQL存储过程语言? 解决方案 在 http://上有可用的工具ora2pg.darold.net/可以用于将Oracle模式转换为Postgres模式,但是我不确定是否还会转换存储过程. 但这可能是一个起点.
..
我正在尝试使用确切的过程签名来调用API,但是以某种方式我认为不正确的数字表可以正确识别. API定义: TYPE NUMLIST IS TABLE OF NUMBER INDEX BY VARCHAR2(50); PROCEDURE GETSERVICES_API ( I_DIMOBJID IN NUMBER, I_OBJECTID IN NUMBER, I_FILTER I
..
如何在存储过程中定义输出参数的大小? 解决方案 您不能.当然,您可以控制存储过程中放入OUT参数的数据量.如果需要,可以创建一个大小合适的局部变量来保存数据,然后将该变量的值分配给OUT参数. 调用程序确定接收OUT参数的变量的大小.
..
我了解Oracle支持多种字符集,但是如何确定当前工作的11g系统是否启用了该功能? 解决方案 SELECT * FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET'; 将显示数据库和国家字符集.数据库字符集控制CHAR和VARCHAR2列中数据的编码.如果数据库在这些列中支持Unicode,则数据库字符集应为AL3
..
我在oracle中创建了一个存储过程: PROCEDURE string_opp(input_string IN varchar2,output_string OUT varchar2) 现在的问题是如何执行此存储过程并检索输出参数.我在sql developer中遵循过: SET SERVEROUTPUT ON DECLARE outputString VARCHAR; BE
..
有人知道是否有一种方法可以找到最长的长度 在Oracle的列中排成一行? 基本上,我需要获取最长行的长度,然后使用该长度加1 使用SUBSTR使列的输出比最长的字符串长一个字符. 谢谢 编辑: 感谢您的建议. 但是,MAX(LENGTH(column_name)) AS MAXLENGTH方法会给我我想要的号码,但是当我尝试将其与SUBSTR(column_name,
..