PL/SQL之--存储过程】的更多相关文章

一.存储过程 存储过程是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.oracle可以把PL/SQL程序储存在数据库中,并可以在任何地方来运行它.存储过程被称为PL/SQL子程序,是被命名的PL/SQL快,存储在数据库,通过输入.输出参数与调用者交换信息.oracle存储过程不返回数据. 语法: create or replace procudure 存储过名称( 参数名称 输入输出类型 参数类型, 参数名称…
1.创建存储过程 .1语法: CREATE[OR REPLACE] PROCEDURE [schema.] procedure_name[(argument[{IN|OUT|IN OUT}] datatype[,...])] {IS|AS} pl/sql_body; procedure_name为存储过程的名称, argument是参数名, datatype是对应参数的数据类型, pl/sql_body是该存储过程真正进行的处理操作的PL/SQL块, OR REPLACE是可选项,如果存在一个同…
SQL> create or replace procedure sp_pro3(name_in varchar2,id_in varchar2) is begin update mytest set name=name_in where id=id_in; end; / Procedure created SQL') PL/SQL procedure successfully completed SQL> select * from mytest; NAME PASSWD ID ------…
首先搞清楚俩概念 存储过程(procedure)&程序包(package) 存储过程:数据库对象之一,可以理解为数据库的子程序,在客户端和服务器端可以直接调用它.触发器是与表直接关联的特殊存储过程,是在对表记录进行操作时触发的. 优点 存储过程在服务器端运行,执行速度快. 存储过程执行一次后,代码就驻留在高速缓存,以后的操作只需从高速缓存中调用已编译的代码执行,提高了系统性能. 确保数据库的安全.可以不授权用户直接访问应用程序中的一些表,而是授权用户执行访问这些表的存储过程.非授权的用户除非通过…
进入PL/SQL命令行窗口输入:select userenv('language') from dual 查出数据库字符集 输入:select * from V$NLS_PARAMETERS 查出NLS_LANGUAGE位本地字符集. 在系统环境变量中增加一个变量NLS_LANG,值设置位select userenv('language') from dual查出得数据库字符集一致,然后重新登陆PL/SQL references: https://www.cnblogs.com/cang1213…
一.实验目的 熟悉使用存储过程来进行数据库应用程序的设计. 二.实验内容 对学生-课程数据库,编写存储过程,完成下面功能: 1.统计离散数学的成绩分布情况,即按照各分数段统计人数: 2.统计任意一门课的平均成绩: 3.将学生选课成绩从百分制改为等级制(即A.B.C.D.E). 要求:提交源程序并表示必要的注释.保证程序能正确编译和运行,认真填写实验报告. 三.实验步骤 实验之前,已经建立数据库,有student,course和sc三张基本表. (一)统计离散数学的成绩分布情况,即按照各分数段统计…
在Oracle数据库中存有一串数据(Ori_Seq),数据包含不等量重复: 为方便查看与管理,现希望添加一字段(New_Seq),在原有数据的末尾为其添加一串序号,相同数据序号从小到大排列,序号长度为三位. 处理结果如下: 使用存储过程处理,代码如下: CREATE OR REPLACE PROCEDURE PROC_addseq(prm_AppCode Out NUMBER, prm_ErrMsg Out Varchar2) IS CURSOR Demo IS select distinct…
1.找到对应的存储过程 2.在存储过程名称上右键,选择Test 3.点击1标识的按钮(begin debugger),选择2开始调试 4.存储过程如需参数,需要在右侧下方的表格区域(3)填入对应的值即可.…
1.Oracle存储过程实例 /*不带任何参数存储过程(输出系统日期)*/ CREATE OR REPLACE PROCEDURE output_date IS BEGIN DBMS_OUTPUT.PUT_LINE(SYSDATE); END output_date; /*带参数in和out的存储过程*/ CREATE OR REPLACE PROCEDURE get_username(v_id IN NUMBER,v_username OUT VARCHAR2) AS BEGIN SELECT…
--存储过程(不带参数) create or replace procedure 存储过程名as  变量.常量声明;begin  代码;end; --存储过程(带输入参数) create or replace procedure 存储过程名(参数1 类型,参数2 类型,...)   --可以设默认值,如low int:=1000as  变量.常量声明;begin  代码;end; --存储过程(带输出参数) create or replace procedure 存储过程名(参数1 out 类型…
接上篇,游标使用的语句,相当于一段匿名的函数,窗口关闭了就不存在了.如果想要窗口关闭了,还能继续执行那段代码,就需要存储过程了: PLSQL是指一个个PLSQL的业务处理过程存储起来进行复用,这些被存储起来的PLSQL程序称之为存储过程. 语法: plsql如何创建存储过程: 1.  一个简单的存储过程,存储过程名称为 p_hello create or replace procedure p_hello is --如果需要,在此处声明变量 begin dbms_output.put_line(…
oracle编译存过卡住处理: 问题描述: 在编译某个存过时,由于没提交或断网或者test没停止又重新编译,导致编译存过一直卡死 问题分析: 存过或某张表被锁 问题处理: 1.查看存过是否锁住,locks不等于零,表示锁住,SELECT * FROM V$DB_OBJECT_CACHE WHERE name='LOGIC_QIANMO_YILONG' AND LOCKS!='0'; 2.查询存过的sid,select  SID from V$ACCESS WHERE object='LOGIC_…
需求:WebAPI服务端,通过Oracle数据库的存储过程,获取数据. 在PL/SQL 建立存储过程:(先来最简单的,就是把整个表都查出来) create or replace procedure SQL_WX_SP(out_return out sys_refcursor) is begin open out_return for 'select * from wx_sp'; end; C#代码:(这是调用的方法,out_return 这个是和存储过程中的游标参数对应的,类型是OracleDb…
在存储过程中,执行了create table.update table.insert into table 但是在使用pl/sql的存储过程调试的时候,一有问题就直接卡住(标识:执行中.....) 后来为了找了一下,原因有二: 1.使用execute immediate执行create table,需要对执行的用户进行授权执行,命令如下: grant create table to  cusername;   2.使用execute immediate执行insert/update时,建议表命名…
我相信你是被百倍性能的字样吸引了,不过我所想侧重的是优化的思路,这个比优化技巧更重要,而结果嘛,其实我不希望说成是百倍提升,“”自黑“”一下. 有一个真实想法和大家讨论一下,就是一个SQL语句如果原本运行20秒,优化到了1秒,性能提升该说是20倍还是提高了95%.当然还见过一种说法,一条SQL语句每次运行20秒,每天运行100次,优化后每次运行1秒,运行还是100次,那么性能提升是说成优化累计时间为100*20-100=1990秒? 好了,我们来看看PL/SQL的优化,前期自己分析了一些信息,可…
1.  子程序的各个部分: 声明部分.可执行部分.异常处理部分(可选) 2.子程序的分类: A.  过程 - 执行某些操作 a.  创建过程的语法: CREATE [OR REPLACE]  PROCEDURE  <procedure name> [(<parameter list>)]  IS|AS <local variable declaration> BEGIN <executable statements> [EXCEPTION <excep…
数据治理中Oracle SQL和存储过程的数据血缘分析   数据治理中的一个重要基础工作是分析组织中数据的血缘关系.有了完整的数据血缘关系,我们可以用它进行数据溯源.表和字段变更的影响分析.数据合规性的证明.数据质量的检查等. 分析数据血缘的方法主要分为四类 自动解析 系统跟踪 机器学习 人工收集 自动解析主要是利用工具解析 SQL 语句.存储过程和 ETL等文件. 本文以 Oracle 为例,来说明如何分析 SQL 和存储过程中的数据血缘. 产生数据血缘的 SQL 语句 SELECT INSE…
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编辑方法概览 答:1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和数据库打交道的方法,和ProC很相似,更底层,很少用; 4) SQLJ: 很新的一种用Java访问Oracle数据库的方法,会的人不多; 5) JDBC 6)…
一.PL/SQL简介 1.概念:PL/SQL语言是Oracle数据库专用的一种高级程序设计语言,是对标准SQL语言进行了过程化扩展的语言. 2.功能:既能够实现对数据库的操作,也能够通过过程化语言中的复杂逻辑结构完成复杂的业务逻辑. 3.特点 (1)与SQL语言紧密集成,所有的SQL语句在PL/SQL中都能够得到支持. (2)减小网络流量,提高应用程序的运行性能. (3)模块化的程序设计功能,提高了系统可靠性. (4)服务器端程序设计可移植性好. 4.PL/SQL块的标准结构 DECLARE 声…
czmmiao 存储过程概述 存储过程是子程序的一种类型,能够完成一些任务,作为schema对象存储于数据库.是一个有名字的PL/SQL代码块,支持接收或不接受参数,同时也支持参数输出.一个存储过程通常包含定义部分,执行部分,Exception部分,可以被其他子程序调用,也可以被重用.过程定义CREATE [OR REPLACE]PROCEDURE procedure_name[(argument_name [IN | OUT | IN OUT] argument_type)]AS | ISBE…
创建时定义名称 2.可以被Oracle server 保存 3.可以被任何程序调用 4.可以被共享 存储过程: 1.不带参数的存储过程: SQL> create or replace procedure proc1 is v_ename emp.ename%type; v_sal emp.sal%type ; begin select ename,sal into v_ename,v_sal from emp where empno=&no; dbms_output.put_line('Na…
前段时间由于修改SMES系统,出现了一个问题. ORA-06550:line 1,column 7;PLS-00201:indentifer '存储过程' must be declared;...PL/SQL Statement ignored 问题 纠结一段时间后,后来找到问题,代码是这样的:…
存储过程的详细建立方法 1.先建存储过程 左边的浏览窗口选择 procedures ,会列出所有的存储过程,右击文件夹procedures单击菜单"new",弹出 template wizard窗口. name框中输入 GetSumAndSub , parameters中填入: p1 in number , p2 in number ,m out number , b out number . 单击ok,右边出现建立存储过程的代码窗口.其中内容为创建存储过程的语句. 在begin en…
存储过程子程序的一种类型,能够完成一些任务,作为schema对象存储于数据库.是一个有名字的PL/SQL代码块,支持接收或不接受参数,同时也支持参数输出.一个存储过程通常包含定于部分,执行部分,Exception部分,可以被其他子程序调用,也可以被重用.   一.过程定义      CREATE [OR REPLACE]PROCEDURE procedure_name      [(argument_name [IN | OUT | IN OUT] argument_type)]      AS…
原文参考:http://plsql-tutorial.com/ PL/SQL存储过程 存储过程相当于一个有名字的PL/SQL块,经过第一次编译后再次调用时不需要再次编译 创建格式: CREATE [OR REPLACE] PROCEDURE proc_name [list of parameters] IS Declaration section BEGIN Execution section EXCEPTION Exception section END; 返回值: 可有可没有 例子: 1>…
如何高效调试oracle存储过程,尤其是父子网状调用的存储过程 1,在需要设置断点的oracle存储过程处设置断点         如何设置断点:直接在某行oracle存储过程处单击行首,会在行首显示一个 中间以白叉填充的红色小圆圈. 如何取消断点:单击中间以白叉填充的红色小圆圈即可,断点就消失了     2,然后开启test窗口 3,按上test窗口的放大镜图标(start debugger)或者点击快捷键F9或者依次打开 菜单debug-->start 4,最后再次点击test窗口的run按…
1.类SQL PLUS窗口:File->New->Command Window,这个类似于oracle的客户端工具sql plus,但比它好用多了. 2.设置关键字自动大写:Tools->Preferences->Editor,将Keyword case选择Uppercase.这样在窗口中输入sql语句时,关键字会自动大写,而其它都是小写.这样阅读代码比较容易,且保持良好得编码风格,同理,在Tools->Preferences->Code Assistant(助手)里可…
一.存储过程.存储函数   1.What's This? ①.ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. ②.存储过程.存储函数的唯一区别是存储函数有返回值,而存储过程没有返回值.   2.创建存储函数 eg.根据部门号返回部门总工资 CREATE OR REPLACE FUNCTION get_salary( dep_id , -- 输入参数, 可以设置默认值 emp_count OUT NUMBER -- 输出参数 ) RE…
游标--数据的缓存区 游标:类似集合,可以让用户像操作数组一样操作查询出来的数据集,实质上,它提供了一种从集合性质的结果中提取单条记录的手段. 可以将游标形象的看成一个变动的光标,他实质上是一个指针,在一段Oracle存放数据查询结果集或者数据操作结果集的内存中,这个指针可以指向结果集任何一条记录. 游标分静态游标和REF游标两类,静态游标包含显式游标和隐式游标. 显式游标: 在使用之前必须有明确的游标声明和定义,这样的游标定义会关联数据查询语句,通常会返回一行或多行.打开游标后,用户可以利用游…
存储过程 1 什么是存储过程? 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2 存储过程的参数模式 存储过程的参数特性: IN类型的参数 OUT类型的参数 IN-OUT类型的参数 值被 传递给子程序 返回给调用环境 传递给子程序 返回给调用环境 参数形式 常量 未初始化的变量 初始化的变量 使用时 默认类型 必须明确指定 必须明确指定 在oracle10中写好了存储过程,代码如下: CREATE OR REPLACE Procedur…