![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQL or PL/SQL
文章平均质量分 71
田攀
tian.pan@qq.com
展开
-
从PL/SQL FAQ中摘抄出来几篇比较有用的文章
全文阅读见PL/SQL FAQHow can one see if somebody modified any code?The source code for stored procedures, functions and packages are stored in the Oracle Data Dictionary. One can detect code changes b转载 2012-04-24 16:09:31 · 2536 阅读 · 0 评论 -
Send Emails from PL/SQL
1.要想从DB Server发邮件,首先得确保DB Server已经启用了SMTP(Simple Mail Transfer Protocol)服务。检查是否启动SMTP的方法telnet server.domain.com 25(25是SMTP的默认端口)2.PL/SQL to send email sample code:DECLARE lc_from_email_id VARCHA原创 2013-02-27 16:20:47 · 2749 阅读 · 0 评论 -
"ROWNUM = 1"会使SQL的性能更快?
SQL中加入ROWNUM = 1会让性能有所提升么?有可能,但也不全是。遇到了一个Case,ROWNUM = 1的加入并没有像想象的那样让性能有所提升。背景:PL/SQL的代码,用下边的Query来检查符合条件的记录是否存在。SELECT 'X' FROM MTL_MATERIAL_TRANSACTIONS A,MTL_TRANSACTION_TYPES B WHERE A.ORGA原创 2013-03-27 17:20:09 · 6836 阅读 · 0 评论 -
不要为了重构而牺牲代码的阅读性
在性能可以接收的前提下,不要为了重构而牺牲代码的阅读性,这会让后期的维护越来越难。尤其是PL/SQL这样面向过程的语言,宁肯代码存在冗余,也要保证逻辑的清晰。重构是为了让逻辑更简单和清晰,而不是为了抽象让逻辑变得混淆和复杂。为了重构而重构,那是炫技,企业级软件工程需要更多地是稳定,清晰,而不是花架子。-------------------------------------------------原创 2013-03-26 17:00:33 · 2636 阅读 · 4 评论 -
PLS-00313: 'XXXXX' not declared in this scope
Package中私有的Procedure/Function(没在Package Specification声明)需要注意放置的位置比如下面的Package,Procedure A 想要调用 Procedure B,CREATE OR REPLACE PACKAGE AAAAA AUTHID CURRENT_USER AS PROCEDURE A;END AAAAA;CREATE OR REP原创 2013-05-17 17:11:22 · 8563 阅读 · 0 评论 -
SQL Joins
Join (SQL) :http://en.wikipedia.org/wiki/Join_%28SQL%29原创 2013-05-17 13:54:07 · 2618 阅读 · 0 评论 -
UltraEdit for PL/SQL
几个设置让UltraEdit更高效的使用PL/SQL(其他语言方法也是类似的)1.PL/SQL的高亮"%appdata%\IDMComp\UltraEdit"下在的模板文件WORDFILE.UEW中增加PL/SQL的高亮模板。PL/SQL的模板文件,可以从这个链接找到。2.增加自定义文件类型默认情况下,对于后缀为.sql的文件,就会使用pl/sql的模板打开了,但是pl/sql的文件类型还有很多种原创 2012-10-26 11:48:50 · 6804 阅读 · 0 评论 -
Update one table with the data in another table
如何用另外B表中的数据Update A表。Sample,UPDATE T1 SET (C1, C2, C3) = (SELECT C1, C2, C3 FROM T2 WHERE T2.USER_ID = T1.USER_ID) WHERE EXISTS (SELECT * FROM T2 WHERE T2.USER_ID = T1.USER_ID);如果没有"Where E原创 2013-10-08 18:08:51 · 2576 阅读 · 0 评论 -
Import data from EXCEL to Oracle table with PL/SQL Developer
通过PL/SQL Developer把Excel导入到数据库表中的方法:1.首先在创建要把Excel导入表,字段名称最好和Excel保持一致。2.Tools > ODBC Importer,User/System DSN选择Excel Files。3.切换到Data to Oracle页签,选择Owner及第一步创建的导入表。默认的字段匹配没有问题的话,就可以Import了。原创 2014-03-12 15:47:51 · 3589 阅读 · 0 评论 -
Invoking Webservice from PL/SQL (UTL_DBWS&UTL_HTTP)
Sample Code:DECLARE L_PARAM_LIST VARCHAR2(512); L_HTTP_REQUEST UTL_HTTP.REQ; L_HTTP_RESPONSE UTL_HTTP.RESP; L_RESPONSE_TEXT VARCHAR2(32767);BEGIN -- service's input parameters L_PARAM原创 2014-05-09 18:56:43 · 7108 阅读 · 0 评论 -
Oracle Apps修改用户密码的API
Oracle Apps修改用户密码API方法一:fnd_user_pkg.updateuser -- Change password of TEST_USER to oracle123 (does not ask for reset on first logon)BEGIN fnd_user_pkg.updateuser (x_user_name => 'T原创 2014-08-27 18:23:18 · 5476 阅读 · 0 评论 -
Cache Pattern
Oracle EBS中,如果获取Item,Organization等基础数据的信息。你可以写SQL来查,这种做法的不好处就是,在不同Procedure或者Function中,你可能需要写多次类似的SQL来取值,造成代码的冗余。EBS标准的做法是,通过Cache模式来时缓存需要的信息。以获取Organization为例,系统中标准的做法是: l_return_value := INV_CACHE.原创 2013-03-04 13:12:46 · 2422 阅读 · 0 评论 -
PL/SQL Cursor常见用法模板
1.LoopDECLARE emp_rec emp%rowtype; CURSOR emp_cur IS SELECT * FROM emp;BEGIN OPEN emp_cur; LOOP FETCH emp_cur INTO emp_rec; EXIT WHEN emp_cur%NOTFOUND;--这个必须有,否则bu原创 2013-02-06 12:58:54 · 5343 阅读 · 0 评论 -
PL/SQL LOOP Construct
Oracle提供三种样式的Loop结构1. The Basic LoopThe BASIC loop repeats until a condition is met. Because the condition is tested at the end of the loop, the BASIC loop will always execute at least once.A原创 2012-04-24 15:14:42 · 3142 阅读 · 0 评论 -
Cursor Loop
Cursor Loop Explicitly declared cursor and recordCREATE ORREPLACE PROCEDURE ISCURSOR IS %ROWTYPE;BEGIN OPEN LOOP FETCH INTO ; EXIT WHEN %NOTFOUND;转载 2012-04-24 15:33:40 · 2917 阅读 · 0 评论 -
Oracle TRUNC(date) & TRUNC(number)
TRUNC(number[,decimals])number 待做截取处理的数值decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分(默认为0)select TRUNC(5.75) from dual;--Output:5select TRUNC(-5.75) from dual;--Output:-5SELECT TRUNC(109.29,原创 2012-06-05 13:48:53 · 7605 阅读 · 0 评论 -
PRAGMA AUTONOMOUS_TRANSACTION(自治事务)
这段时间遇到一个问题,程序里明明插入了一条记录,但在后边的一段Procedure中却查不到刚刚插入的记录,最后发现这个Procedure的定义中加入了PRAGMA AUTONOMOUS_TRANSACTION。PRAGMA AUTONOMOUS_TRANSACTION中文翻译过来叫“自治事务”(翻译的还算好理解),对于定义成自治事务的Procedure,实际上相当于一段独立运行的程序段,这段程原创 2012-06-19 10:52:25 · 34579 阅读 · 0 评论 -
关于Oracle DB中SQL Script的注释(REM,--,/* */)
Oracle DB中SQL Script注释的语法 REM Single line comment -- Single line comment /* Single line comment */ /* Multi Line comment */补充:REM是REMARK的缩写那么REM和--的区别是什么?--或者/原创 2012-07-13 23:41:08 · 7408 阅读 · 0 评论 -
Create/Drop Oracle Stored Package
Syntax of the Create PackageCREATE OR REPLACE PACKAGE [body] packagename ISEND;Sample:CREATE OR REPLACE PACKAGE overloaded IS PROCEDURE insby(namein VARCHAR2); PROCEDURE insby(numbin PLS_I原创 2012-07-17 13:01:40 · 3908 阅读 · 0 评论 -
Array in PL/SQL
普通的数组语法:TYPE year_type IS TABLE OF number INDEX BY BINARY_INTEGER;The above single statement contains a lot of meaning. First of all, we are simply defining our own data type, “year_type.” Make sure原创 2012-11-19 19:01:25 · 2758 阅读 · 0 评论 -
Oracle EBS中有关Form的触发器的执行顺序
触发器执行顺序:1. 当打开FORM时:(1) PRE-FORM(2) PRE-BLOCK(BLOCK级)(3) WHEN-NEW-FORM-INSTANCE(4) WHEN-NEW-BLOCK-INSTANCE(5) WHEN-NEW-RECORD-INSTANCE(6) WHEN-NEW-ITEM-INSTANCE2.转载 2012-09-14 14:08:31 · 4205 阅读 · 0 评论 -
Global Variable in PL/SQL
Non-Across Sessionscreate or replace package test_pkgas global_var number :=1; constant_var CONSTANT NUMBER := 2;end;Across Sessionscreate table global_value ( x int );insert into global_value原创 2013-01-10 12:18:57 · 2207 阅读 · 0 评论 -
Oracle set timing on
如何查看SQL或存储过程在SQL*plus中的执行时间?Ans:可以使用命令set timing on;SQL> set timing on;SQL> select count(*) from my_tab; COUNT(*)---------- 323456Elapsed: 01:02:23.0501:02:23.05^ ^ ^ ^| | | || |原创 2015-05-28 17:10:31 · 7907 阅读 · 0 评论