当前位置:文档之家› plsql常用函数

plsql常用函数

plsql常用函数
plsql常用函数

PLSQL常用函数

1)处理字符的函数

|| CONCAT ---并置运算符。

格式∶CONCAT(STRING1, STRING2)

例:’ABC’|| ’DE’=’ABCDE’

CONCAT(‘ABC’,’DE’) =’ABCDE’

INSTR---搜索子串位置

格式∶INSTR(STRING , SET[ , 开始位置[ , 出现次数]])

例∶ INSTR (‘this is a test’ , ‘i’ , 1,2)=6

LENGTH----计算串长

格式∶ LENGTH(string)

LTRIM,RTRIM,TRIM -----左截断,右截断,左右截断。默认为删除空格。

格式∶ LTRIM(STRING[,‘SET’])

例∶ LTRIM(‘***tes*t***’,’*’)=’tes*t***’

LOWER----将字符串转换为小写

格式∶LOWER(string)

UPPER---将字符串转换为大写

格式∶UPPER(string)

SUBSTR----提取子串。START为正数时从左开始、为负数时从右开始

格式∶ SUBSTR(STRING , START [ , COUNT])

例∶ SUBSTR(‘WORDSTAR’ , 2 , 3)=’ ORD’

REPLACE---搜索指定字符串并替换

格式∶REPLACE(string , substring , replace_string)

例∶ REPLACE(‘this is a test’ , ‘this’ , ‘that an’)=’that an is a test’

2)处理数字的函数

ROUND---返回固定小数位数。

格式∶ROUND (value)value为数字

例∶ROUND (66.123,2)= 66.12

CELL---返回大于等于特定值的最小整数

格式∶CELL(value)

例∶ CELL(-10,9)= -10

3)处理日期

SYSDATE---系统时间。精确至秒

例:TO_CHAR(SYSDATE,'YYYY-MM-DD') 2011-05-11(返回日期)

TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') 2011-05-11 11:05:15(返回日期+时间)

常用日期数据格式

Y或YY或YYY 年的最后一位,两位或三位Select to_char(sysdate,’YYY’) from dual;

SYEAR或YEAR SYEAR使公元前的年份前加一负号Select to_char(sysdate,’SYEAR’) from dua l;-1112表示公元前111 2年

Q 季度,1~3月为第一季度Select to_char(sysdate,’Q’) from dual;2表示第二季度①

MM 月份数Select to_char(sysdate,’MM’) from dual;12表示12月

RM 月份的罗马表示Select to_char(sysdate,’RM’) from dual;IV表示4月

Month 用9个字符长度表示的月份名Select to_char(sysdate,’Month’) from dual;May后跟6个空格表示5月

WW 当年第几周Select to_char(sysdate,’WW’) from dual;24表示2002年6月13日为第24周W 本月第几周Select to_char(sysdate,’W’) from dual;2002年10月1日为第1周

DDD 当年第几, 1月1日为001,2月1日为032 Select to_char(sysdate,’DDD’) from dual;36 3 2002年1 2月2 9日为第363天

DD 当月第几天Select to_char(sysdate,’DD’) from dual;04 10月4日为第4天

D 周内第几天Select to_char(sysdate,’D’) from dual;5 2002年3月14日为星期一

DY 周内第几天缩写Select to_char(sysdate,’DY’) from dual;SUN 2002年3月24日为星期天

HH或HH12 12进制小时数Select to_char(sysdate,’HH’) from dual;02 午夜2点过8分为02 HH24 24小时制Select to_char(sysdate,’HH24’) from dual;14 下午2点08分为14

MI 分钟数(0~59) Select to_char(sysdate,’MI’) from dual;17下午4点17分

SS 秒数(0~59) Select to_char(sysdate,’SS’) from dual;22 11点3分22秒

提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。

ADD_MONTH—加减月份。numvalue为负数时减去相应月份

格式: ADD_MONTH (data1,numvalue)

MONTHS_BETWEEN---返回两日期之间的月数,当data1

格式: MONTHS_BETWEEN(data1,data2)

LAST_DAY---返回指定日期的最后一天。

格式∶LAST_DAY(date)

TRUNC---将日期按照format格式截短,缺省为DD(不是四舍五入)

格式:TRUNC(date, format)

例∶ TRUNC (to_date(‘2002-11-07’,’yyyy-mm-dd’),’MM’)= 2002-11-01

4)分组函数

返回基于多个行的单一结果.和TSQL基本一致。

常用函数:

AVG---求平均值

COUNT---返回查询的行数

MAX---返回查询列的最大值

MIN---返回查询列的最小值

SUM---返回查询列的总和

MAX, MIN常与GROUP BY配套使用

5)转换函数

TO_DATE---转换字符串为日期型

格式∶ TO_DATE(STRING[,’FORMAT’])

TO_CHAR---转换日期型或数值型为字符串。最重要的函数之一.其FORMAT格式多种多样格式∶TO_CHAR(DATE [,’FORMAT’])

FORMAT---具体格式参考ORACLE8i DBA 宝典P835数字格式元素

P836 日期格式元素

TO_NUMBER---转换字符串为数字

格式∶TO_NUMBER(string [ , format])

FORMAT---具体格式参考ORACLE8i DBA 宝典P835数字格式元素

第9章 存储过程与存储函数

第9章存储过程与存储函数 一、选择题 1.MySQL中存储过程的建立以关键字()开始,后面仅跟存储过程的名称和参数。A.CREATE FUNCTION B.CREATE TRIGGER C.CREATE PROCEDURE D.CREATE VIEW 2.下列关于存储过程名描述错误的是()。 A.MySQL的存储过程名称不区分大小写。 B.MySQL的存储过程名称区分大小写。 C.存储过程名不能与MySQL数据库中的内置函数重名。 D.存储过程的参数名不要跟字段名一样。 3.下面声明变量正确的是()。 A.DECLARE x char(10) DEFAULT 'outer ' B.DECLARE x char DEFAULT 'outer ' C.DECLARE x char(10) DEFAULT outer D.DECLARE x DEFAULT 'outer ' 4.从tb_sutdent表中将名称为mrsoft的用户赋值给host,以下SQL语句正确的是()。A.SELECT host INTO name FROM tb_sutdent WHERE name ='mrsoft'; B.SELECT name INTO host FROM tb_sutdent WHERE name= 'LeonSK '; C.SELECT name INTO host FROM tb_sutdent WHERE name='mrsoft'; D.SELECT name INTO host FROM tb_sutdent WHERE name=‘mrsoft’; 5.光标的一般使用步骤,以下正确的是()。 A.声明光标使用光标打开光标关闭光标 B.打开光标声明光标使用光标关闭光标 C.声明光标打开光标选择光标关闭光标 D.声明光标打开光标使用光标关闭光标 6.下列控制流程语句中,MySQL存储过程不支持()。 A.WHILE B.FOR C.LOOP D.REPEAT 25

实验五PLSQL高级编程

实验4 PL/SQL高级编程 开发语言及实现平台或实验环境: Oracle 10g 实践目的 (1) 掌握存储过程、存储函数、包、触发器高级数据库对象的基本作用。 (2) 掌握存储过程、存储函数、包、触发器的建立、修改、查看、删除操作。实验要求 (1) 记录执行命令和操作过程中遇到的问题及解决方法,注意从原理上解释原因。 (2) 掌握存储过程、存储函数、包、触发器的命令。 实验内容 1.创建存储过程 (1) 将下列的未命名的PL/SQL,转换成存储过程,存储过程名自己设定,注意比较未命名的PL/SQL 与命名的PL/SQL 的差别,如没有where current of 是什么情况。 declare cursor emp_cursor is select * from emp where deptno=10 for update; begin for emp_record in emp_cursor loop dbms_output.put_line(emp_record.sal); update emp set sal=sal*1.1 where current of emp_cursor; end loop; end; / (2)(3)任选一个 (2) 创建存储过程“dept_count_pro”,通过传入参数传入部门号deptno(如10),显示员工表“emp”中不同部门的员工人数,并执行该存储过程。 (3) 创建存储过程“num_pro”,通过传入参数传入3个数,完成3 个数的从小到大排序,通过 3 个传出参数保存排序后的 3 个数,并执行该存储过程,显示排序结果。 2.查看存储过程 (1) 利用SQL*Plus 或iSQL*Plus 从user_source 数据字典中查看存储过程。 3.删除存储过程 (1) 利用SQL*Plus或iSQL*Plus删除某个存储过程。 4.创建函数 (1) 创建存储函数“emp_fun”,通过传入参数传入员工的编号,根据传入的员工编号,检查该员工是否存在。如果存在,则返回员工的姓名,否则返回“此员工不存在“,并执行该存储函数。 (2) 创建存储函数“dept_count_fun”,利用传入参数传入部门号(如10),返回员工表“emp”中不同部门的员工人数,并执行该存储函数,注意比较与存储过程“dept_count_pro”的差别。 5.查看存储函数 (1) 从user_source 数据字典中查看存储函数。

PLSQL+Developer工具的使用(非常详细)

PLSQL Developer工具的使用 PLSQL Developer的安装十分简单,先安装PL.SQL.Developer.exe文件,然后安装chinese.exe文件进行汉化。安装成功后在桌面点击PLSQL Developer的快捷方式进入登录页面(如图1)。 图1 输入用户名和口令,选择好要连接的数据库,点击“确定”登录成功(如图2)。 图2 在成功登录后会进入到PLSQL Developer的操作界面(如图3)。

图3 用户可以在左边下拉菜单中选择“我的对象”,然后点击“Table”可以显示出项目所涉 及的数据库中所有表(如图4)。 新建表,点击Table文件夹,然后点击鼠标右键在列表中选择“新建”选项进入到创建

新表的页面(如图5),用户可以根据自己的需要来创建新表,但一定要遵循Oracle规范 信息填写完毕后点击“应用”按钮创建成功。 图5 修改表结构,可以选中要该表后点击鼠标右键在列表中选择“编辑”选项进入到修改表结构的页面(如图6),这里显示的都是该表的结构信息,如要进行修改操作请根据实际情况慎重修改,修改后点击“应用”按钮提交修改内容。 图6 修改表名,可以选中要该表后点击鼠标右键在列表中选择“重新命名”选项进入到重新

命名的页面(如图7),这里需要注意的是表名起的一定要有意义。 图7 查询表结构,可以选中要该表后点击鼠标右键在列表中选择“查看”选项进入到查看表结构的页面(如图8)。 图8 删除表,可以选中要该表后点击鼠标右键在列表中选择“删掉表”选项就可以删除已创

建的表了。 查询表中存储的数据,可以选中要该表后点击鼠标右键在列表中选择“查询数据”选项进入到查询结果页面(如图9),这里显示了所有已录入的数据。 图9 编辑数据,可以选中要该表后点击鼠标右键在列表中选择“编辑数据”选项进入到查询结果页面(如图10),这里显示了所有已录入的数据,用户可以对想要编辑的数据进行操作。 图10 修改数据,用户可以在页面中直接对想要修改的数据进行操作,修改后点击页面中的

oracle自定义函数和存储过程

oracle自定义函数和存储过程 oracle自定义函数和存储过程(转)2008-07-23 10:43--过程(PROCEDURE)--------------------------------------------------// --创建表 CREATE TABLE user_info ( id VARCHAR2(4), name VARCHAR2(15), pwd VARCHAR2(15), address VARCHAR2(30) ); --插入数据 INSERT INTO user_info VALUES('u001','zhao','zhao','shanghai'); --如要经常执行插入,Oracle每次都要进行编译,并判断语法正确性,因此执行速度可想而知, --所以我们要创建一个过程来实现 CREATE OR REPLACE PROCEDURE AddNewUser ( n_id user_info.id%TYPE, n_name user_https://www.doczj.com/doc/2d19033211.html,%TYPE, n_pwd user_info.pwd%TYPE, n_address user_info.address%TYPE ) AS BEGIN --向表中插入数据 INSERT INTO user_info(id,name,pwd,address) VALUES(n_id,n_name,n_pwd,n_address); END AddNewUser; / --下面我们利用PL/SQL匿名块调用该过程 DECLARE --描述新用户的变量 v_id user_info.id%TYPE := 'u002'; v_name user_https://www.doczj.com/doc/2d19033211.html,%TYPE := 'wish'; v_pwd user_info.pwd%TYPE := 'history'; v_add user_info.address%TYPE := 'shanghai'; BEGIN --调用过程,添加wish用户到数据库

第10章 存储过程、函数和包

第10章存储过程、函数和包 存储过程(PROCEDURE)、函数(FUNCTION)和包(PAKAGE)是以编译的形式存储在数据库中的数据库的对象,并成为数据库的一部分,可作为数据库的对象通过名字被调用和访问。 存储过程通常是实现一定功能的模块;函数通常用于计算,并返回计算结果;包分为包头和包体;用于捆绑存放相关的存储过程和函数,起到对模块归类打包的作用。 存储过程、函数和包是数据库应用程序开发的重要方法,三者既有区别,也有联系。 ?存储过程和存储函数。 ?过程的参数和调用。 ?包和包的应用。 10.1 存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的。 10.1.1 认识存储过程和函数 和PL/SQL程序相比,存储过程有很多优点,具体归纳如下: ·存储过程和函数以命名的数据库对象形式存储于数据库当中。存储在数据库中的优点是很明显的,因为代码不保存在本地,用户可以在任何客户机上登录到数据库,并调用或修改代码。 ·存储过程和函数可由数据库提供安全保证,要想使用存储过程和函数,需要有存储过程和函数的所有者的授权,只有被授权的用户或创建者本身才能执行存储过程或调用函数。 ·存储过程和函数的信息是写入数据字典的,所以存储过程可以看作是一个公用模块,用户编写的PL/SQL程序或其他存储过程都可以调用它(但存储过程和函数不能调用PL/SQL 程序)。一个重复使用的功能,可以设计成为存储过程,比如:显示一张工资统计表,可以设计成为存储过程;一个经常调用的计算,可以设计成为存储函数;根据雇员编号返回雇员的姓名,可以设计成存储函数。 ·像其他高级语言的过程和函数一样,可以传递参数给存储过程或函数,参数的传递也有多种方式。存储过程可以有返回值,也可以没有返回值,存储过程的返回值必须通过参数带回;函数有一定的数据类型,像其他的标准函数一样,我们可以通过对函数名的调用返回函数值。 存储过程和函数需要进行编译,以排除语法错误,只有编译通过才能调用。

oracle--存储过程--存储函数--触发器

存储过程和存储函数: 指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。语法: create [or replace] PROCEDURE 过程名(参数列表) AS PLSQL子程序体; 存储过程实例: 存储过程的调用: 方法一: set serveroutput on begin raisesalary(7369); end; / 方法二: set serveroutput on exec raisesalary(7369);

函数(Function)为一命名的存储程序,可带参数,并返回一计算值。函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值。函数说明要指定函数名、结果值的类型,以及参数类型等。 语法: CREATE [OR REPLACE] FUNCTION 函数名(参数列表) RETURN 函数值类型 AS PLSQL子程序体; 示例: 函数的调用: declare v_sal number; begin v_sal:=queryEmpSalary(7934); dbms_output.put_line('salary is:' || v_sal); end; / 在java语言中调用存储过程: 存储过程:

什么时候使用存储过程/存储函数? 如果只有一个返回值,用存储函数; 否则,就用存储过程。 在out参数中使用游标: 声明包结构: 创建包体:

在Java语言中访问游标类型的out参数: 触发器: 数据库触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列。 触发器的类型 语句级触发器 在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。 行级触发器(FOR EACH ROW) 触发语句作用的每一条记录都被触发。在行级触发器中使用old和new伪记录变量, 识别值的状态。 创建触发器: CREATE [or REPLACE] TRIGGER 触发器名 {BEFORE | AFTER} {DELETE | INSERT | UPDATE [OF 列名]} ON 表名 [FOR EACH ROW [WHEN(条件) ] ] PLSQL 块

存储过程和函数的区别

存储过程与函数的区别 存储过程: 存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。 存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。 可以出于任何使用SQL 语句的目的来使用存储过程,它具有以下优点: 1、可以在单个存储过程中执行一系列SQL 语句。 2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。 3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL 语句快。 用户定义函数: Microsoft SQL Server 2000 允许创建用户定义函数。与任何函数一样,用户定义函数是可返回值的例程。根据所返回值的类型,每个用户定义函数可分成以下三个类别: 1、返回可更新数据表的函数 如果用户定义函数包含单个Select 语句且该语句可更新,则该函数返回的表格格式结果也可以更新。 2、返回不可更新数据表的函数 如果用户定义函数包含不止一个Select 语句,或包含一个不可更新的Select 语句,则该函数返回的表格格式结果也不可更新。 3、返回标量值的函数 用户定义函数可以返回标量值。 存储过程 功能强大,限制少 不能直接引用返回值 用select语句返回记录集 自定义函数 诸多限制,有许多语句不能使用,许多功能不能实现 可以直接引用返回值 用表变量返回记录集

PLSQL使用详细介绍

PL/SQL Developer使用指南 一、安装 PL/SQL Developer不需要执行安装程序,只要从其他机上copy一个来就可以使用。 二、登录 在使用PL/SQL Developer之前,首先需要在本机上配置数据库客户端(在oracle自带工具Net8Assistant中可配置)。配置完成后,在以下窗口中敲入用户名和密码就可进入PL/SQL Developer了。 进入PL/SQL Developer以后,会见到以下窗口: 在这里,可以对数据库中的任何对象(包括函数、存储过程、包、表、触发器等等)进行编辑、修改、运行等。(要视乎该用户的权限而定)。 如果用户要重新登录另一数据库,则可以按下“”重新输入本地数据库标识和用户及密码重新登录。

三、修改对象或编译存储过程 我们以存储过程为例: 双击菜单项“procedures”,按右键即可选择新建存储过程(new)或是修改存储过程(edit)等等。选择完毕后则用oracle的PL/SQL语句对存储过程进行编辑,在编辑完以后 按下可以对它进行编译,如果编译未通过,会在窗口中出现错误提示(如下图所示), 用户可根据提示进行修改和再次编译。 当完全编译通过后,用户可单击存储过程并按右键,选择“test”(执行存储过程),出现以下窗口:

在执行前,首先按“”进行调试,然后按“”执行该存储过程;如果用户在执行过程 中发生错误异常退出了,PL/SQL Developer会在窗口中显示错误,并提示退出。在发生错误后,用户可以选择在存储过程中添加“DBMS_OUTPUT.put_line(字符串)”语句来进行错 误跟踪或是通过一步步执行存储过程(按)来查看执行过程中数据的变化从而进行纠错。 除了存储过程之外,还可以通过PL/SQL Developer对数据库中的其他对象进行修改和授权,情况和以上存储过程的修改大同小异。 四、SQL语句的执行 如果用户要在oracle中执行sql语句,可以点击工具栏上的“new”()中的“SQL window”,这时会弹出一个sql语句的输入窗口,用户就可以在此窗口中敲入sql语句了。并按“F8”或是“”执行,执行后的结果会在下面显示出来,但默认情况下一次只能显 示一页,可以按“”显示下一页;如果用户需要显示全部,则可以按下“”;而按下 “”则可以输入查询条件。如下面两张图所示:

实验14 存储过程与函数

实验十四存储过程与函数 【实验目的与要求】 1.熟练掌握存储过程的编写。 2.熟练掌握函数的编写与使用。 【实验内容与步骤】 14.1.基础知识 存储过程(Stored Procedure)和函数是一组编译好存储在服务器上的完成特定功能T-SQL代码,是某数据库的对象。客户端应用程序可以通过指定存储过程或函数的名字并给出参数(如果该存储过程带有参数)来执行存储过程。 14.2.创建用户存储过程 1. 使用存储过程模板创建存储过程 在【对象资源管理器】窗口中,展开“数据库”节点,再展开所选择的具体数据库节点,再展开选择“可编程性”节点,右击“存储过程”,选择“新建存储过程”命令,如图所示: 在右侧查询编辑器中出现存储过程的模板,可以在此基础上编辑存储过程,单击“执行”按钮,即可创建该存储过程。

实验14-1:创建一个简单的存储过程,实现从CP表中读取Mp3产品相关信息USE CPXS GO CREATE PROCEDURE get_mp3 --此为无参存储过程 AS SELECT产品编号,产品名称,价格,库存量 FROM CP WHERE产品名称='mp3' 实验14-2:执行存储过程 执行存储过程可用下列方法之一: (1)使用存储过程名字如:get_mp3 (2) 使用Exec命令:如:EXEC get_mp3 执行上面创建的存储过程,并给出执行结果:

2. 使用T-SQL语句创建存储过程 在查询分析器里使用T-SQL可直接创建存储过程格式: CREATE PROC 过程名 @形参名类型 @变参名类型OUTPUT AS SQL语句 实验14-3:创建一个多表查询的存储过程。 问题:查询在2009年9月18日有销售的产品名称(1)请给出相应的代码 create proc get_cp as select产品名称 from cp,cpxsb where销售日期='2009-9-18' (2)执行存储过程,并给出执行结果:

触发器、存储过程和函数三者有何区别 四

触发器、存储过程和函数三者有何区别四 什么时候用存储过程?存储过程就是程序,它是经过语法检查和编译的SQL语句,所以运行特别快。 触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行;你所说的函数是自定义函数吧,函数是根据输入产生输出,自定义只不过输入输出的关系由用户来定义。在什么时候用触发器?要求系统根据某些操作自动完成相关任务,比如,根据买掉的产品的输入数量自动扣除该产品的库存量。什么时候用存储过程?存储过程就是程序,它是经过语法检查和编译的SQL语句,所以运行特别快。 存储过程和用户自定义函数具体的区别 先看定义: 存储过程 存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。 存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。 可以出于任何使用SQL 语句的目的来使用存储过程,它具有以下优点: ·可以在单个存储过程中执行一系列SQL 语句。 ·可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。·存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL 语句快。用户定义函数 函数是由一个或多个Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。Microsoft? SQL Server? 2000 并不将用户限制在定义为Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。 可使用CREATE FUNCTION 语句创建、使用ALTER FUNCTION 语句修改、以及使用DROP FUNCTION 语句除去用户定义函数。每个完全合法的用户定义函数名(database_name.owner_name.function_name) 必须唯一。 必须被授予CREATE FUNCTION 权限才能创建、修改或除去用户定义函数。不是所有者的用户在Transact-SQL 语句中使用某个函数之前,必须先给此用户授予该函数的适当权限。若要创建或更改在CHECK 约束、DEFAULT 子句或计算列定义中引用用户定义函数的表,还必须具有函数的REFERENCES 权限。 在函数中,区别处理导致删除语句并且继续在诸如触发器或存储过程等模式中的下一语句的Transact-SQL 错误。在函数中,上述错误会导致停止执行函数。接下来该操作导致停止唤醒调用该函数的语句。 用户定义函数的类型

存储过程和函数的区别

存储过程和函数的区别 存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。 . l 视图的优点?建立视图的基本语法结构? 视图的优点: 1. 视图对于数据库的重构造提供了一定程度的逻辑独立性。数据的逻辑独立性是指数据库重构造时,如数据库扩大(增加了新字段,新关系等),用户和用户程序不会受影响。 2. 简化了用户观点。视图的机制使用户把注意力集中在他所关心的数据上。若这些数据不是直接来自基本表,则可以定义视图,从而使用户眼中的数据结构简单而直接了当,并可大大简化用户的数据查询操作,特别是把若干表连接在一起的视图,把从表到表所需要的连接操作向用户隐蔽了起来。 3. 视图机制使不同的用户能以不同的方式看待同一数据。 4. 视图机制对机密数据提供了自动的安全保护功能。可以把机密数据从公共的数据视图(基本表)中分离出去,即针对不同用户定义不同的视图,在用户视图中不包括机密数据的字段。这样,这类数据便不能经由视图被用户存取,从而自动地提供了对机密数据的保护。 视图的基本语法结构: CREATE VIEW view_name [(column ][,...n])] AS select_statement 其中view_name为要建立的视图的名称,而AS子句后面的就是建立视图的查询语句。而此语句有以下限制:不能包含ORDER BY、COMPUTE和COMPUTE BY等子句;不能包含INTO 关键字;不能涉及临时表。 . l 事务是什么? 事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为ACID (原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务: 1、原子性:事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。 2、一致性:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规

PLSQL使用方法

1.1PLSQl远程连接oracle数据库 1.1.1配置tnsnames.ora 路径:X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client\tnsnames.ora tnsnames.ora配置: orcl = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) ) (CONNECT_DATA = (SID = orcl) ) ) 其中HOST为主机IP地址,红色字体处 PORT为oracle开放端口号 SERVICE_NAME为连接数据库名字,蓝色字体处 *此配置参数可以配置多个,也就是可以配置多个连接字符串(全局名称) 1.1.2添加连接环境变量 变量名:TNS_ADMIN 变量值:X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client 1.1.3添加ORACLE的语言环境变量: 变量名:NLS_LANG 变量值:AMERICAN_AMERICA.ZHS16GBK(设置ORACLE的语言) 重新连接,即可正常显示中文。 如果想转换为UTF8字符集,可以赋予"NLS_LANG"为"AMERICAN_AMERICA.UTF8",其他编码同上

1.1.4下载并安装PL.SQL.Developer,配置应用: 配置tools->preferences->connection PLSQL 设置 Oracle Home=X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client OCI library=X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client\oci.dll 1.1.5重启plsql 再次打开plsql则会在database中有oracledata选项输入用户名密码就可以登陆。 1.2导入基础数据 1.2.1输入用户名密码登录plsql

数据库函数、存储过程实验报告

南京信息工程大学数据库系统实验(实习)报告实验(实习)名称数据库系统实验4 实验(实习)日期2016-6-7 得分指导教师顾韵华 系计软院专业计科年级2014级班次计科 3 班姓名仇彤学号20141308071 一、实验目 1、掌握T-SQL函数及其调用方法。 2、掌握存储过程的定义及执行方法。 3、掌握有参存储过程的定义及执行方法。 4、掌握C#访问数据库的方法。 二、实验内容 1、使用系统函数(DA TEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。(P299"思考与练习") 2、编写T-SQL程序,利用系统转换函数,检索总订购商品数在10~19的客户姓名。 3、定义函数RectArea,计算一个长方形的面积(长、宽作为函数的参数)。 4、在SPDG数据库中定义函数,根据商品编号,查询该商品的名称;(函数名为QryGoods)。 5、在SPDG数据库中定义存储过程GetSPBH,返回所有商品编号,并使用EXEC语句执行存储过程。 6、在SPDG数据库中定义存储过程KH_NJ_Qry,返回江苏南京的客户编号、姓名、及其订购商品的编号、商品名称和数量,并使用EXEC语句执行存储过程。 7、在SPDG数据库中定义存储过程SP_FOOD_Qry,返回食品类商品编号、商品名称及其订购客户编号、姓名、订购数量,并使用EXEC语句执行存储过程。 8、定义存储过程SP_Total,查询指定商品编号的总订购数。并执行该存储过程。 9、定义存储过程SP_TotalCost,查询指定商品编号的总订购金额。并执行该存储过程。 10、定义存储过程SP_Name_Qry,查询指定商品名称的商品信息。并执行该存储过程。 11、定义存储过程SP_Name_Qry1,查询指定商品名称的商品信息;若存在,输出1;否则,输出0。并执行该存储过程。 12、定义存储过程SP_Name_Qry2,查询指定商品名称的商品信息;若存在,用输出参数传出1;否则传出0。 三、实验过程与结果 1、使用系统函数(DATEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。(P299"思考与练习") 设计的SQL语句如下: print datediff(d,getdate(),'2020-1-1') 执行结果:

plsql使用技巧详解

plsql使用技巧详解 1.记住登陆密码 为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码;设置方法: PL/SQL Developer 7.1.2 ->tools->Preferences->Oracle->Logon History ,“Store history”是默认勾选的,勾上“Store with password”即可,重新登录在输入一次密码则记住了; 2.登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables 目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的。 设置方法: Tools菜单 --> Brower Filters,会打开Brower Folders的定单窗口,把“My Objects”设为默认即可。 Tools菜单--Brower Folders,中把你经常点的几个目录(比如:Tables Views Seq Functions Procedures)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短。 3.类SQL PLUS窗口 File->New ->Command Window 这个类似于oracle的客户端工具sql plus,但用比它好用多了; 4.关键字自动大写 Tools->Preferences->Editor,将Keyword case选择Uppercase。这样在窗口中输入sql语句时,关键字会自动大写,而其它都是小写。这样阅读代码比较容易,且保持良好得编码风格,同理,在 Tools->Preferences->Code Assistant里可以设置数据库对象的大写、小写,首字母大写等。 5.查看执行计划 选中需要分析的SQL语句,然后点击工具栏的Explain plan按钮(即执行计划),或者直接按F5;这个主要用于分析SQL语句执行效率,分析表的结构,便于为sql调优提供直观依据。 6.使用自定义快捷键 PL/SQL Developer也可以像其他IDE那样使用自定义快捷键提高编写代码效率,节省时间。 如我们平时在sql窗口中使用最频繁的 select * from 我们就可以设置一个快捷键来简化select * from的输入。 1)。建立一个文本文件shortcuts.txt,并写入如下内容: s = SELECT * FROM sc = SELECT count(*) FROM 复制代码另存到PL/SQL Developer的安装路径下的~/PlugIns目录下 2)。Tools-->Preferences-->User Interface-->Editor-->AutoReplace,选中Enable复选框,然后浏览文件选中之前创建的shortcuts.txt,点击Apply 3)。重启PL/SQL Developer,在sql窗口中输入s+空格,sc+空格做测试 7.执行单条SQL语句 PL/SQL Developer 7.1.2 -->tools->Preferences-->Window types ,勾上“AutoSelect Statement”。在使用 PL/SQL Developer的SQL Window时,按F8键,PL/SQL Developer默认是执行该窗口的所有SQL语句,需要设置为鼠标所在的那条SQL语句,即执行当前SQL语句。 8.PL/SQL Beautifier(PL/SQL 美化器)

Removed_数据库-存储过程触发器和函数实验报告

存储过程、触发器和用户自定义函数实验 兰州大学数据库实验报告实验内容一 练习教材中存储过程、触发器和用户自定义函数的例子。教材中的BookSales数据库,在群共享中,文件名为BookSales.bak。 实验内容二 针对附件1中的教学活动数据库,完成下面的实验内容。 1、存储过程 (1)创建一个存储过程,该存储过程统计“高等数学”的成绩分布情况,即按照各分数段统计人数。 CREATE Proc MATH_NUM@MATH CHAR(20)='高等数学' AS SELECT@MATH as canme,count(case when score>=90 then 1 end)as[90以上], count(case when score>=80 and score<90 then 1 end)as[80-90], count(case when score>=70 and score<80 then 1 end)as[70-80], count(case when score>=60 and score<70 then 1 end)as[60-70], count(case when score<60 then 1 end)as[60以下] FROM study,course WHERE https://www.doczj.com/doc/2d19033211.html,o=https://www.doczj.com/doc/2d19033211.html,o and https://www.doczj.com/doc/2d19033211.html,ame=@MATH GROUP BY https://www.doczj.com/doc/2d19033211.html,ame

运行结果: (2)创建一个存储过程,该存储过程有一个参数用来接收课程号,该存储过程统计给定课程的平均成绩。 CREATE Proc AVG_SCORE@cno CHAR(5) AS SELECT@cno as课程号,https://www.doczj.com/doc/2d19033211.html,ame as课程名,STR(AVG(score),5,2)as平均成绩 FROM study,course WHERE https://www.doczj.com/doc/2d19033211.html,o=https://www.doczj.com/doc/2d19033211.html,o and https://www.doczj.com/doc/2d19033211.html,o=@cno GROUP BY https://www.doczj.com/doc/2d19033211.html,ame 运行结果:

Oracle+PlSql存储过程

Oracl e 存储过程 目录 Oracle 存储过程 (1) Oracle存储过程基础知识 (1) Oracle存储过程的基本语法 (2) 关于Oracle存储过程的若干问题备忘 (4) 1. 在Oracle中,数据表别名不能加as。 (4) 2. 在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利 用游标的话就另当别论了。 (5) 3. 在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常。 (5) 4. 在存储过程中,别名不能和字段名称相同,否则虽然编译可以通过,但在运行阶段 会报错 (5) 5. 在存储过程中,关于出现null的问题 (5) 6. Hibernate调用Oracle存储过程 (6) 用Java调用Oracle存储过程总结 (6) 一、无返回值的存储过程 (6) 二、有返回值的存储过程(非列表) (8) 三、返回列表 (9) 在存储过程中做简单动态查询 (11) 一、本地动态SQL (12) 二、使用DBMS_SQL包 (13) Oracle存储过程调用Java方法 (16) Oracle高效分页存储过程实例 (17) Oracle存储过程基础知识 商业规则和业务逻辑可以通过程序存储在Oracle中,这个程序就是存储过程。 存储过程是SQL, PL/SQL, Java 语句的组合,它使你能将执行商业规则的代码从你的应用程序中移动到数据库。这样的结果就是,代码存储一次但是能够被多个程序使用。 要创建一个过程对象(procedural object),必须有CREATE PROCEDURE 系统权限。如果这个过程对象需要被其他的用户schema 使用,那么你必须有CREATE ANY PROCEDURE 权限。执行procedure 的时候,可能需要excute权限。或者EXCUTE ANY PROCEDURE 权限。如果单独赋予权限,如下例所示: grant execute on MY_PROCEDURE to Jelly 调用一个存储过程的例子: execute MY_PROCEDURE( 'ONE PARAMETER'); 存储过程(PROCEDURE)和函数(FUNCTION)的区别。

数据库函数、存储过程实验报告

南京信息工程大学数据库系统实验(实习)报告实验(实习)名称数据库系统实验4实验(实习)日期2016-6-7 得分指导教师顾韵华 系计软院专业计科年级2014级班次计科3班姓名仇彤学号20141308071 一、实验目 1、掌握T-SQL函数及其调用方法。 2、掌握存储过程得定义及执行方法。 3、掌握有参存储过程得定义及执行方法。 4、掌握C#访问数据库得方法。 二、实验内容 1、使用系统函数(DATEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。(P299"思考与练习") 2、编写T-SQL程序,利用系统转换函数,检索总订购商品数在10~19得客户姓名。 3、定义函数RectArea,计算一个长方形得面积(长、宽作为函数得参数)。 4、在SPDG数据库中定义函数,根据商品编号,查询该商品得名称;(函数名为QryGoods)。5、在SPDG数据库中定义存储过程GetSPBH,返回所有商品编号,并使用EXEC语句执行存储过程。 6、在SPDG数据库中定义存储过程KH_NJ_Qry,返回江苏南京得客户编号、姓名、及其订购商品得编号、商品名称与数量,并使用EXEC语句执行存储过程。 7、在SPDG数据库中定义存储过程SP_FOOD_Qry,返回食品类商品编号、商品名称及其订购客户编号、姓名、订购数量,并使用EXEC语句执行存储过程。 8、定义存储过程SP_Total,查询指定商品编号得总订购数。并执行该存储过程。 9、定义存储过程SP_TotalCost,查询指定商品编号得总订购金额。并执行该存储过程。 10、定义存储过程SP_Name_Qry,查询指定商品名称得商品信息。并执行该存储过程。 11、定义存储过程SP_Name_Qry1,查询指定商品名称得商品信息;若存在,输出1;否则,输出0。并执行该存储过程。 12、定义存储过程SP_Name_Qry2,查询指定商品名称得商品信息;若存在,用输出参数传出1;否则传出0。 三、实验过程与结果 1、使用系统函数(DA TEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。(P299"思考与练习") 设计得SQL语句如下: printdatediff(d,getdate(),'2020-1-1') 执行结果: 2、编写T-SQL程序,利用系统转换函数,检索总订购商品数在10~19得客户姓名。 设计得SQL语句如下: useSPDG select客户姓名 from KHBx, (select b、客户编号,SUM(数量) as总数量 fromKHB a,SPDGB b where a、客户编号=b、客户编号

PLSQLdeveloper工具使用教程汇总

PLSQL入门 PL/SQL的概述 PL/SQL的优势 PL/SQL是一种块结构的语言,允许你将业务逻辑封装在一起,这是到目前为止使用PL/SQL 的最大优势 PL/SQL是在服务器上运行,可以与数据库和SQL引擎直接进行交互, PL/SQL是什么? (procedural language/sql) 是oracle在标准的sql语言上的扩展,pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用列外处理各种错误,这样使得它的功能变得更加强大。 特性: 减少java程序的复杂性 一.过程,函数,触发器是pL/SQL编写的 二.过程、函数、触发器是在oracle中 三.pL/SQL是非常强大的数据库过程语言 四.过程,函数可以再java程序中调用 为什么学? a)提高应用程序的运行性能 b)模块化的设计思想[分页的过程,订单的过程,转账的过程] c)减少网络传输量(传统的方法,用sql语句传输!现在就只需要调用存储过程) d)提高安全性(传统sql 可以看到表名字段等…) 不好: 移植性不好,(你写好的存储过程,函数等当我们要换数据库时,这些东西就没用了) 开发工具: 1.Sqlplus 开发工具 是oracle公司提供的一个工具,这个因为我们在以前介绍过: 2.Pl/SQL developer开发工具 Pl/sql developer是用于开发pl/sql块的集成开发环境(ide) 它是一个独立的产品,而不是oracle的一个附带品, Create procedure sp_pro1//存储过程名字is Begin ---执行部分 Insert into mytest values(‘’,’’);

PLSQL Developer使用手册

PL/SQL Developer使用手册

文档目录 文档控制 ................................................................................................. 错误!未定义书签。文档内容 .. (1) PLSQL Developer的日常使用 (2) 安装 (2) 启动 / 登录 (3) SQL窗口 (3) 命令窗口 (7) 表定义编辑器 (8) 编写程序 (10) 美化SQL语句及程序 (14)

文档内容 1. PLSQL Developer的日常使用

PLSQL Developer的日常使用 PL/SQL Developer 是一个为 Oracle 数据库开发存储程序单元的集成开发环境 (IDE),使用 PL/SQL Developer 你能方便地创建你的客户/服务器应用程序的服务器部 分。日常使用中,可以用来完成如下工作: ●查询数据 ●使用文本编辑器写程序单元(过程、触发器等等)。 ●执行SQL脚本创建表或视图等。 ●修改表结构或数据。 ●查找问题的原因并纠正错误。 ●使用解释计划工具或tkprof工具优化你的SQL语句。 ●使用PL/SQL Beautifier功能美化SQL语句。 安装 1.系统需求 PL/SQL Developer 是 32 位的 Windows 应用程序,因此你的工作站上必须至少安 装了 Windows 95 或 Windows NT 4。要连接到 Oracle 数据库,PL/SQL Developer 需要 32 位版本的 SQL*Net、 Net 8、 Net 9 或 Net 10。 2.本地安装 要在本地工作站上安装 PL/SQL Developer,运行来自于安装媒体的 setup 程序, 然后下面的对话框将会显示出来: 你可以为程序文件选择一个目的目录、一个开始菜单的文件夹、一个 PL/SQL Developer 在桌面上的快捷方式的位置以及安装选项,然后根据向导按Next按钮, 这样程序文件就会被复制,快捷方式也会被创建。 3.卸载PL/SQL Developer 若因为某些原因你希望卸载 PL/SQL Developer,你可以使用控制面版里的添加/ 移除程序来移除它。

相关主题
文本预览
相关文档 最新文档