惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
博客园 - 三生石上(FineUI控件)
罗磊的独立博客
P
Proofpoint News Feed
博客园_首页
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
月光博客
月光博客
L
LINUX DO - 热门话题
C
CERT Recently Published Vulnerability Notes
H
Hacker News: Front Page
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
Google Developers Blog
博客园 - 【当耐特】
C
Cisco Blogs
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
T
Tor Project blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Last Watchdog
The Last Watchdog
腾讯CDC
P
Palo Alto Networks Blog
F
Full Disclosure
S
SegmentFault 最新的问题
Simon Willison's Weblog
Simon Willison's Weblog
C
Cyber Attacks, Cyber Crime and Cyber Security
Recent Announcements
Recent Announcements
P
Privacy & Cybersecurity Law Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
PCI Perspectives
PCI Perspectives
A
About on SuperTechFans
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Register - Security
The Register - Security
IT之家
IT之家
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
Webroot Blog
Webroot Blog
S
Security Affairs
T
The Blog of Author Tim Ferriss
T
Threat Research - Cisco Blogs
量子位
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
美团技术团队
Cyberwarzone
Cyberwarzone
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events

博客园 - aming

.Net线程 浅析C# new和override的区别 收集一些.NET开发资源站点和部分优 秀.NET开源项目 (转) 你必须知道的.net C#正则表达式整理备忘 asp.net cache 深入认识javascript中的eval函数 FCKEditor的使用及配置方法 个人总结 javascript跨域问题 Javascript的IE和Firefox兼容问题 JavaScript的私有变量 typeof、instanceof、constructor与对象类型 javascript内存泄漏问题 JavaScript 中的内存泄露模式 jQuery Ajax 全解析 悟透JavaScript (转) JavaScript的9个陷阱及评点 全面理解javascript的caller,callee,call,apply概念(修改版)
ORACLE 基础
aming · 2010-06-07 · via 博客园 - aming

Sql 语句块

/*声明部分,以declare开头*/
declare
v_id integer;
v_name varchar(20);
cursor c_emp is select * from employee where emp_id=3;
/*执行部分,以begin开头*/
begin
 open c_emp;             --打开游标
 loop
  fetch c_emp into v_id,v_name;  --从游标取数据
  exit when c_emp%notfound ;
 end loop ;
close c_emp;           --关闭游标
dbms_output.PUT_LINE(v_name);
/*异常处理部分,以exception开始*/
exception
 when no_data_found then
  dbms_output.PUT_LINE('没有数据');
end ;

oracle 存储过程的基本语法


1.基本结构

CREATE OR REPLACE PROCEDURE 存储过程名字
(
    参数1 IN NUMBER,
    参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN

END 存储过程名字

2.SELECT INTO STATEMENT
  将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
  记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
  例子:
  BEGIN
  SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
      xxxx;
  END;
  ...

3.IF 判断
  IF V_TEST=1 THEN
    BEGIN
       do something
    END;
  END IF;

4.while 循环
  WHILE V_TEST=1 LOOP
  BEGIN
 XXXX
  END;
  END LOOP;

5.变量赋值
  V_TEST := 123;

6.用for in 使用cursor

  ...
  IS
  CURSOR cur IS SELECT * FROM xxx;
  BEGIN
 FOR cur_result in cur LOOP
  BEGIN
   V_SUM :=cur_result.列名1+cur_result.列名2
  END;
 END LOOP;
  END;

7.带参数的cursor
  CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
  OPEN C_USER(变量值);
  LOOP
 FETCH C_USER INTO V_NAME;
 EXIT FETCH C_USER%NOTFOUND;
    do something
  END LOOP;
  CLOSE C_USER;

8.用pl/sql developer debug
  连接数据库后建立一个Test WINDOW
  在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试

9 .用游标返回数据集时,游标要定义为应用类型的游标:

CREATE OR REPLACE PROCEDURE PROC_TEST(    

V_CS  OUT  SYS_REFCURSOR     )   

AS  

--定义变量......  

BEGIN  

--数据的处理......  

   OPEN V_CS FOR SELECT * FROM test_table;  

RETURN ;  

END;  

索引:

查看索引个数和类别

select * from user_indexes where table_name='表名' ;

查看索引被索引的字段


SQL>select * from user_ind_columns where index_name=upper('&index_name');

PS:

查看某表的约束条件

SQL>select constraint_name, constraint_type,search_condition, r_constraint_name
from user_constraints where table_name = upper('&table_name');

SQL>select c.constraint_name,c.constraint_type,cc.column_name
from user_constraints c,user_cons_columns cc
where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
and c.owner = cc.owner and c.constraint_name = cc.constraint_name
order by cc.position;

查看视图的名称


SQL>select view_name from user_views;