plsql相关内容
我对 MS SQL Server 提出了疑问(和答案),尽管我还不知道针对Oracle和PL/SQL的一种.是否有针对Oracle PL/SQL的xUnit样式测试框架?他们是什么? 解决方案 最常用的可能是 utPLSQL 此工具包的原始作者现在可用于Quest,该工具具有商业PL /SQL单元测试应用程序.
..
当我在Oracle shell中运行以下命令时,它工作正常 truncate table table_name 但是当我尝试将其放入存储过程中 CREATE OR REPLACE PROCEDURE test IS BEGIN truncate table table_name; END test; / 失败 ERROR line 3, col 14, endin
..
如果我有一个这样的表: pkey age ---- --- 1 8 2 5 3 12 4 12 5 22 我可以“分组"以获取每个年龄段的计数. select age,count(*) n from tbl group by age; age n --- - 5 1 8 1 12 2 22
..
我将Oracle XE用于开发PHP应用程序的唯一目的,而11g版本显然已经失去了管理10g曾经拥有的用户的GUI工具,因此我想准备一个代码段来从命令行创建用户.我正在尝试定义变量,因此我不需要键入相同的用户名16次,但语法不正确: DECLARE my_user VARCHAR2(30) := 'foo'; my_password VARCHAR2(9) := '1234'
..
在PL/SQL过程中,我用逗号分隔的列表作为字符串.我需要 删除重复项 将列表放入数组中. 我发现有多种方法可以做到这两种,但不能同时做到. 有帮助吗? 解决方案 有一个众所周知的SQL技巧,可以将以逗号分隔的列表转换为行.只需使用该技巧,添加一个DISTINCT关键字,然后将结果BULK COLLECT放入您的数组中(我假设您是说集合). DECLARE p_te
..
我需要将一定范围内的数字列表转换为按优先级列排序的值列表.该表具有以下值: | YEAR | R_MIN | R_MAX | VAL | PRIO | ------------------------------------ 2010 18000 90100 52 6 2010 240000 240099 82 3 2010 250000
..
我继承了一个Oracle .dmp文件,我正在尝试将该文件导入CSV,以便可以将其加载到MySQL中. 描述了我正在使用的一般方法此处.我在一行中遇到了问题.它包含的日期为5544-09-14,如下所示: alter session set nls_date_format = 'dd-MON-yyyy'; select OID, REF, TRADING_DATE From LOAN
..
例如具有CIDR的IPv6地址: 2620:0:2d0:200 :: 7/32 输出 起始范围:2620:0:0:0:0:0:0:0 结束范围:2620:0:ffff:ffff:ffff:ffff:ffff:ffff 如何使用PL/SQL计算? 解决方案 一旦我编写了一个通用的PL/SQL程序包,您就可以在其中进行此类转换.它适用于IPv4和IPv6. CREATE OR RE
..
我有一个语句级触发器,该触发器将在对表(称为客户)执行INSERT UPDATE或DELETE操作时触发.我想显示一条消息(发送到DBMS_OUTPUT),其中包含已插入/更新/删除的行数. 我只想为每个触发语句发送一条消息,例如 “在客户表中插入了4行". 如何从INSERT触发器声明中访问受该触发语句影响的行数,即以下代码中的XXX: CREATE OR REPLACE TR
..
我的过程如下: Declare cur_1 Sys_Refcursor; cur_2 Sys_Refcursor; v_1 VARCHAR2(30); v_2 VARCHAR2(30); v_3 VARCHAR2(30); v
..
我有下面的代码.我正在使用Oracle 11g. SELECT DBMS_OBFUSCATION_TOOLKIT.md5 (input => UTL_RAW.cast_to_raw( FIRST_NAME ||LAST_NAME )) md5_key , FIRST_NAME , LAST_NAME FROM C_NAME_TAB WHERE PKEY='1234'
..
动态SQL不是我的朋友,基本上,我的想法是我可以使用带有"p_in_table"参数的过程来获取表中包含的行数. CREATE OR REPLACE PROCEDURE how_many_rows(p_in_table VARCHAR2) IS TYPE cur_cur IS REF CURSOR; v_cur_cur cur_cur; v_rowcount NUMBER(28
..
我需要知道一个字符串是否仅包含ASCII字符.到目前为止,我使用此REGEX: DECLARE str VARCHAR2(100) := 'xyz'; BEGIN IF REGEXP_LIKE(str, '^[ -~]+$') THEN DBMS_OUTPUT.PUT_LINE('Pure ASCII'); END IF; END; / Pure A
..
如何在pl/sql块中使用"START SCRIPT"? 我想使用这样的东西 declare begin proc(para1,para2); execute immediate 'start prompt1' ; end; / 我也想知道,我可以从提示符1中获取一个值到调用脚本的PL/SQL块中吗?因为我需要使用该值在PL/SQL块中执行一些操作. 解决方案
..
我应该在Oracle中使用VARCHAR2还是CHAR作为数据类型? 有人建议我对我需要的这些新表使用CHAR,但我担心,因为这些新表将用于填充使用VARCHAR2数据类型的现有表.我担心在VARCHAR2字段中放置多余的空格以及比较问题.我知道可以通过修整或转换来比较它们,但恐怕会使我的代码变得混乱和混乱. 您对此有何看法? 解决方案 我担心在VARCHAR2字段中放置多
..
CREATE PROCEDURE Pname(in_Tid IN VARCHAR2,in_IP IN VARCHAR2,outstaticip OUT VARCHAR2,outcount OUT NUMBER) AS BEGIN select STATIC_IP into outstaticip from OP_TTER_MAPPING where TERMINAL_ID = in_Tid
..
在PL/SQL中,可以使用串联为IN运算符指定值: v_sql := 'select field1 from table1 where field2 in (' || v_list || ')'; 是否可以使用变量来做同样的事情? v_sql := 'select field1 from table1 where field2 in (:v_list)'; 如果是,怎么办?
..
这似乎是一个愚蠢的问题,但是我在有关事务管理的Oracle概念指南中看到以下内容: 以下任何一项交易结束 发生以下情况: 用户发出COMMIT或ROLLBACK 没有SAVEPOINT子句的语句. 用户运行DDL语句,例如 创建,删除,重命名或更改.如果 当前交易包含任何DML 语句,Oracle首先提交 事务,然后运行并提交 DDL语句作为一个新的,单一的 结单交易. 用
..
有这样的电话 some_proc(sysdate, sysdate); select some_func(sysdate, sysdate) from dual 我想知道两个sysdate调用是否有可能给出不同的值? sysdate不会仅由于执行速度而改变吗? 解决方案 some_proc(sysdate, sysdate); -在PL/SQL语句中使用sysdate并不总是相同
..
我搜索了google,但没有找到关于我为什么要使用软件包的令人满意的答案. 我知道一个程序包是一组过程,函数和不同的变量.据我了解,它与OOP中的对象相对应.但是,当然没有什么比实例化包的不同实例更重要的了,每个实例将具有不同的属性值并具有不同的行为. 那么当我可以创建一个独立的过程并独立调用它时,使用软件包的好处是什么? 解决方案 包具有以下优点: 凝聚力:与特定子系统
..