plsql笔记二_常量变量(2复合变量)
PLSQL循序渐进全面学习教程(全)
PLSQL循序渐进全面学习教程(全)PL/SQL是用于Oracle数据库的编程语言,它结合了SQL语句的数据操作能力和一般编程语言的逻辑控制能力。
PL/SQL循序渐进的全面学习教程将帮助你逐步学习和掌握PL/SQL的各个方面。
1.简介和基础知识:-PL/SQL的概念和背景-PL/SQL的开发工具和环境-PL/SQL和SQL的关系-PL/SQL的基本语法和数据类型2.变量和常量:-PL/SQL变量的声明和使用-不同类型的变量和数据类型-常量的定义和使用3.控制结构:-IF-THEN语句和IF-THEN-ELSE语句-CASE语句的使用-循环语句(FOR循环、WHILE循环)4.异常处理:-异常的概念和分类-异常处理的方法和语句-自定义异常和错误处理5.子程序和函数:-PL/SQL子程序和函数的概念和用途-创建和调用子程序和函数-参数传递和返回值6.游标和结果集:-游标的概念和使用场景-游标的声明、打开、关闭和绑定-使用游标处理结果集和数据集7.触发器:-触发器的概念和作用-创建和使用触发器-触发器的触发事件和触发时机8.包和包体:-包和包体的定义和特点-创建和使用包和包体-包的封装和共享9.过程和函数:-过程和函数的概念和区别-创建和使用过程和函数-过程和函数的编写和调用10.使用PL/SQL开发应用程序:-使用PL/SQL编写数据库操作代码-使用PL/SQL开发业务逻辑-PL/SQL和其他编程语言的集成以上是PL/SQL循序渐进全面学习教程的大纲,你可以根据自己的学习进度逐步深入学习每个主题。
希望这个教程对你学习和掌握PL/SQL编程语言有所帮助!。
PLSQL学习笔记
一、PL/SQL基本语法要素1.相对其他语言特殊运算符=号是是否相等的比较运算符:=才是赋值运算符' ' 两个单引号之间表示字符类型的变量" " 双引号之间标识引用,如果字段名,数据库名等|| 表示字符之间的连接符--表示单行注释%属性指示器2.PL/SQL变量及数据类型1.变量类型标量类型:数值,字符,日期,布尔复合类型:索引表,嵌套表,数组引用类型:游标类型(CURSOR),对象类型(REF)LOB类型:大文本等2.使用%定义变量的类型跟某个表的列属性一致的变量的声明v_name %type 表示v_name 这个变量与表student中的列name 属性一样v_student student%rowtype 表示v_student这个变量客户存student中的一行数据3.用select into个变量赋值的时候select结果必须只有一行数据,如果多行会包too many row错误,空的话则会报空错误。
3.PL/SQL中最基本的语句块结构DECLARE声明变量,要使用的变量必须在这里声明BEGIN需要执行的程序语句EXCEPTION异常处理语句END二、PL/SQL 程序顺序结构(分支和循环)1.正常都是从上到下的顺序结构2.使用if进行分支处理IF 语句的格式:if condition_1 then statement_1; elsif condition_n then statement_n;else else_statements; endif;3.使用case进行分支处理CASE语句格式:1.单值比较: case expression when result_1 then statements_1;when result_2 then statements_2;elseelse_statement;endcase;2.多值比较:casewhen expression_1 then statement_1;when expression_2 then statement_2;elseelse_statements;endcase;4.使用循环结构1.使用loop循环结构:loop statements;exit when expression;end loop;满足expression条件的时候跳出循环;2.使用while循环结构:while expression loop statements;end loop;expression 的格式:vi<=10 不加分号3.使用for循环结构:for expression loop statements;end loop;expression 的格式:vi in 1..10 不叫分号三、游标基础及使用1.游标的定义:游标用于表示一查询结果的结果集2.游标使用四个步骤:---1.声明declare --- 2.打开open ----3.读取fetch ----4.关闭close1.声明游标:CURSOR cursor_name IS select_statements;例如:CURSOR cursor_student IS SELECT id,name,age,sex FROM students WHERE name LIKE '林%';2.使用游标是打开:Open cursor_name;例如:OPEN cursor_student;打开游标的时候系统才会去查询游标声明的数据集;3.读取数据:FETCH cursor_name INTO variable_name1,…variable_name2;例如:FETCH cursor_studnet INTO v_id,v_sname,v_age,v_sex;第一次读取的是第一行数据,再次使用FETCH读取数据的时候是下一行所以处理游标时一般都是用循环;4.关闭游标:CLOSE cursor_name;例如:CLOSE cursor_student;3.游标中的属性:四个常用属性:%ISOPEN 、%FOUND 、%NOTFOUND 、%ROWCOUNT1.%ISOPEN 返回游标是否打开使用方法cursor_name%ISOPEN例如:cursor_student%ISOPEN;2.%NOTFUND 返回最近一次FETCH取数是否有取到数,没取到返回true,有取到返回false;一般用于判断循环终止使用方法:cursor_name%NOTFUND例如:cursor_student%NOTFOUND3.%FOUND 与%NOTFOUND相反4.%ROWCOUNT 返回现在已经读取的行数使用方法:cursor_name%ROWCOUNT例如:cursor_student%ROWCOUNT4.简单使用游标循环读取数据的例子读取幵打印学生表中“计算机系学生的信息”DECLAREv_specialty students.specialty%type; --声明变量v_name %type;v_dob students.dob%type;CURSOR student_cur --声明游标ISSELECT name,dobFROM students WHERE specialty=v_specialty;BEGINv_specialty:='计算机'; --给变量赋值OPEN student_cur; --打开游标DBMES_OUTPUT.PUT_LINE('学生姓名出生日期'); --输出LOOPFETCH student_cur INTO v_name,v_dob; --读取游标中的数据EXIT WHEN student_cur%NOTFUND; --设定退出条件DBMS_OUTPUT.PUT_LINE(v_name||' '||v_dob); --输出结果END LOOP; --循环体结束标志CLOSE sutent_cur; --关闭游标END; --块结构结束标志5.游标的应用:1.对游标指定的数据进行修改:需要对游标指定的数据修改必须在声明游标的时候带有FOR UPDATE 关键字语法:CURSOR cursor_name IS select_statement FOR UPDATE OF table_name NOTWAIT;OF table_name 可以不写,用于自动选择多表的时候确定那些表需要锁定;NOTWAIT可以不写,用于确认是否等待锁。
plsql笔记
1.声明部分:主要用于声明变量、常量、数据类型、游标、异常处理名称以及本地(局部)子程序定义等。
2.可执行部分执行部分:是PL/SQL块的功能实现部分。
该部分通过变量赋值、流程控制、数据查询、数据操纵、数据定义、事务控制、游标处理等实现块的功能。
3.异常处理部分:异常处理部分用于处理该块执行过程中产生的异常。
执行部分是必须的,而声明部分和异常部分是可选的;PL/SQL的字符集包括:大小写字母:A~Z,a~z数字:0~9空白:制表符、空格和回车数字符号:+ - * / 〈〉 =标点符号:~ ! @ # $ % ^&* ()_ | { } [ ] ?;:, . “ ‘1.1标识符用于定义PL/SQL变量、常量、异常、游标名称、游标变量、参数、子程序名称和其他的程序单元名称等。
1.2在PL/SQL程序中,标识符是以字母开头的,后边可以跟字母、数字、美元符号($)、井号(#)或下划线(_),其最大长度为30个字符,并且所有字符都是有效的。
数字类型字符类型日期/区间类型行标识类型布尔类型原始类型LOB类型引用类型记录类型集合类型%TYPE与%ROWTYPE分类数据类型数字类型 NUMBER、BINARY_NUMBER PLS_NUMBER字符类型 VARCHAR2、CHAR、LONG、NCHAR、NVARCHAR日期/区间类型 DATE、TIMESTAMP、INTERVAL行标识类型 ROWID、UROWID布尔类型 BOOLEAN(TRUE、FALSE、NULL)原始类型 RAW、LONG RAWLOB类型 CLOB、BLOB、NCLOB、BFILE引用类型 REF CURSOR,REF object_type。
记录类型 RECORD集合类型 TABLE、VARRAY变量定义的一般格式variable_name [CONSTANT] datatype [NOT NULL] [DEFAULT|:=expression];说明1.1变量或常量名称是一个PL/SQL标识符,应符合标识符命名规范;1.2每行只能定义一个变量;1.3如果加上关键字CONSTANT,则表示所定义的是一个常量,必须为它赋初值;1.4如果定义变量时使用了NOT NULL关键字,则必须为变量赋初值;1.5如果变量没有赋初值,则默认为NULL;1.6使用DEFAULT或“:=”运算符为变量初始化。
PLSQL学习笔记
(五)权限控制语句(DCL):GRANT 授予权限 /REVOKE 移除权限
SELECT:
SELECT 查询列表 FROM 数据源;
*&* SQL命令必须加分号。
ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK;
修改用户 解锁
给HR解锁
主要用于通配固定位数的字符。例如查询月收入五位数以上的员工。五位ห้องสมุดไป่ตู้可以用'_'来查询。
逻辑操作符(用在WHERE子句中)
AND
OR
NOT
先执行 NOT ,再执行 AND 最后执行 OR。
ORDER BY
ORDER BY子句在 SELECT 语句的最后。
ASC:升序
(三)事务控制语句:COMMIT 提交、ROLLBACK 回滚、
SAVEPOINT 存储点(与 ROLLBACK 搭配使用)在回滚的时候可以回滚到某个存储点上。否则回滚到最初起点上。
(四)数据定义语句:对对象操作。TRUNCATE 清除表中所有数据 /CREATE 创建 /DROP 删除 /ALTER 修改
定义空(NULL)值
空值出现在表达式中会导致整个表达式的值为空。
NVL(字段名,将要赋予的值)函数
作用:将空值转换成其他有ASCLL码的值。
annual_salary年薪
别名
可以加中文的字段别名。
如果想强制地改变列名的大小写,可以在别名的定义时加上双引号,列名有空格时也要在列名上加双引号。
以上函数都是返回string的一部分,从字符位置A开始,长为B个字符。如果A是0,那它就被认为是1(字符串的开始位置)。如果A是正数,那么字符从左边开始数。如果是负数,则从STRING的末尾开始,从右边数。如果B不存在,那么缺省是整个字符串。如果B小于1,将返回NULL。如果A或B使用了浮点数,那么该数值首先被节取成一个整数,返回类型与STRING相同。
Oracle之PLSQL的变量小结
Oracle之PLSQL的变量小结Variable summary of PL/SQL's OracleThere are four types of PLSQL variables, namely:Scalar type (Scalar)-composite type (Composite)-reference type (Reference)LOB type (Large Object)1 scalar type:-a variable that holds only a single value-when defining, you must specify scalar data types1. 1 commonly used scalar types(1)VARCHAR2 (n);Defines strings of variable lengthN specifies the maximum length of the stringThe maximum value of n is 32767 bytesThe length must be specified when usingWhen the PLSQL block uses this data type to manipulate the VARCHAR2 table column, the value should be no more than 4000 bytes long(2)CHAR (n):Defines a fixed length stringN specifies the maximum length of a stringThe maximum value of n is 32767 per seSpecifies the length when used. If not specified, the default value is 1When the PLSQL block uses this data type to manipulate the CHAR2 table column, the value should be no more than 2000 bytes long(3)NUMBER (P, s);Defines integer and floating-point numbers of fixed lengthP represents precision, used to specify the total number of digitsS represents the scale used to specify the number of digits after the decimal point(4)DATEDefine date and data data(5)BOOLEANDefine Boolean variablesValues are: TRUE, FALSE, NULLFor PLSQL unique data types, this type of data cannot be used by table columnsNULL stands for missing, inapplicable, or unknown(6)LONG and LONG ROWLong: a data type is used to define a variable length string, similar to the VARCHAR2 data type, but the maximum length of its string is 32760 bytesLong row: data types are used to define binary data of variable length, with a maximum length of 32760 bytes(7)BINARY_INTEGERInteger definedNumerical range between -2147483647 and 2174483647(8)BINARY_FLOAT and BINARY_DOUBLEBINARYFLOAT defines single precision floating point numbers (Oracle, 10g, new additions)BINARY DOUBLE defines double precision floating point numbers (Oracle, 10g, new additions)(9)TIMESTAMPDefine time and date data (new additions to Oracle 9i)The assignment method is exactly the same as the assignment method for the date variableWhen displaying TIMESTAMP variable data, not only will the date be displayed, but also the time and the afternoon mark will be displayed1. 2. Define scalar typesSyntax:Identifier, [CONSTANT], datatype, [NOT, NULL] [: =|DEFAULT, expr]Identifier: Specifies the name of a variable or constantCONSTANT: the specified constantDatatype: the type used to specify variables or constantsNOT NULL: non empty, yes, it must be initialized =:assignment matches DEFAULT: defaultsExpr: initial value1.3scalar definition rulesEach row declares a variableAssignment of variables using: identifier = = value:Variable names up to 30 characters1.4use the%TYPE propertyInstall database columns or other variables to determine the type and length of new variables (dynamic and binding)Syntax: identifier Table. column_name%TYPE;或identify other__________type variable name).2、复合变量指用于存放多个值的变量当定义复合变量时,必须要使用P1 / sql的复合数据类型pl / sql的复合数据类型包括.pl / sql记录pl / sql表(索引表)pl / sql嵌套表varray关于这些复合数据类型,由相关章节给出3、参照变量指用于存放数值指针的变量可以通过参照变量来共享相同对象,从而降低占用空间两种参照变量.游标变量(ref. 8).对象类型变量(ref obj _ type)关于这些参照变量,由相关章节给出4、lob变量用于存储大批量数据的变量分为两种.内部lob包括clob、blob、nclob,它们的数据被存储在数据库中,并且支持事务操作.外部lob bfile,该类型数据被存储在os文件中,并且不支持事务操作.存储大批量字符数据clob.nclob存储大批量字符数据,unicode编码.存储大批量二进制数据blob.存储指向OS文件的指针bfile.5、非pl / sql变量5. 1、替换变量(仅用于sql plus或者用于原理和sql * * plus相同的开发工具).临时存储值利用它可以达到创建通用脚本的目的利用它可以达到和用户交互,故在sql * plus中又称交互式命令替换变量的格式式在变量名称前加一个,以便在运行sql命令时提示用户输入替换数据,然后按输入数据运行sql命令语法.(1)& 〃& 变量名〃eg: & name;生命周期:单次引用中,不需要声明,如果替换字符或日期类型,最好用单引号扩起使用范围where> order by>列表达式、表名、整个select语句中.(2)& 〃& 变量名〃eg: & & name;生命周期整个会话(session连接),不需要声明.(3)define "define 变量名=变量值"eg: define a = dark.生命周期:整个会话,预先声明,使用时用&引用声明的变量define variable =用户创建的char类型的值:define变量名= 值.define column _ name (变量名):查看变量命令.undefine清除变量变量名.define:查看在当前会话中所有的替换变量和它们的值(4)the environment整个会话生命周期.预先声明,可以客户化提示信息,使用时用&引用声明的变量.定义.accept 变量名name number / char / date prompt '提市信息内容 ' 即:vac (fte) [num ber] variable [date] [for | tank | [mat]] [-][format] [full text document by | ompt nopr []] [hide]解释.prompt命令用于输出提示用户的信息,以便使用户了解脚本文件的功能和运行情况.PAUSE command: used to pause the script fileHIDE option: used to hide user input so that others are invisible and safeThis command means: when the PLSQL program execution to the time variable name, this requires the user to interact in order to continue execution, the PLSQL program will show "information content" allows users to input relevant information (if the hide option is specified, then the next user input will be displayed increased with an asterisk. Safe, a bit like a password), user input content is received and it paid name, type on the message of "content" user input content, PLSQL program developer by number/char/date is specified, the variable name get the correct value, continue to implement the relevant program below!Example: accept, a, char, prompt. Please enter the employee's employment time (yyyy-mm-dd): ' hideExamples: accept, a, char, prompt, 5 input, a:', hideSubstitution variables are very dependent on the SQL *Plus environment, which is not available when the environment variable verify is turned off and can be used only if it is turned on:Set verify (environment variable) off: close the debug command (turn off the replacement process)Set verify (environment variable) on; open the debug command (you can see the replacement process)5. 2, SQL *PLUS environment variables (used only for SQL, *Plus, or the same development tools for the principles and SQL *Plus):ECHO display echoDoes HEADING (OFF/ON} display column headers?The size of the amount of return each ARRAYSIZE(20/n} receives from the queryFEEDBACK(OFF/ON} feedback, feedback informationLONG{80/n}on/text} LONG typeLINESIZE line widthSET LINESIZE n (preferably within 200)PAGESIZE: sets the size of the page. SET PAGESIZE NWrap(off/on} discountSET modifySHOW displayThe formatted display command in SQL *PLUS:COLUMN [column option] allows you to set the format of field or field aliasesCOLUMN last name HEADING employee|name' ' for wrappingCol field name view commandCL[EAR]: clear the format of columnsHEA[DING] TEXT: sets column headersFOR [MAT] FORMAT: formatting column value of characters and numbers, the date is invalid, eg:column salary justify left format $999999, including justify left: col managerid format 999999999 left:The length of the restricted string has a A+ numeric limitThe number of restrictions is 9, and a few is limited to 9.NOPRINT/PRINT NOPRINT: a field is blocked from the output (returns but does not display).Col field name noprint/print.NULL if there is a NULL value, what does it show?.Col, name, null, ' on, employee'TTITLE[text/off/on] sets the header of the reportBTITLE[text/off/on] sets the end of the report When you make a report, you should first think about the size of the PAGESIZE.BREAK ON [REPORT_ELEMENT]Suppress the display of duplicate values that can only be valid with a field name, eg:选择department id, last_name从员工在rownum < 301,2顺序;打破department id5.3、做PL/SQL脚本文件的过程:变量定义接受环境变量设置集格式控制命令阀芯使用变量的SQL阀芯脱落清除格式控制重置环境变量释放变量5. 4、引用非PL / SQL变量当要在PL/SQL块中引用非PL/SQL变量时,也就是要引用PL/SQL块所在地的主机变量(或称”环境变量”)时,必须要在非PL/SQL变量前加冒号(“:”),如:“名字”,名字为非PL/SQL变量。
plsql使用技巧
plsql使用技巧PL/SQL是Oracle数据库的一种编程语言,可以用于编写存储过程、触发器、函数等程序。
本文将从以下几个方面介绍PL/SQL的使用技巧:一、变量和常量的使用1.1 变量的定义在PL/SQL中,可以使用DECLARE语句来定义变量。
例如:DECLAREv_name VARCHAR2(100);BEGINv_name := 'John';END;1.2 常量的定义在PL/SQL中,可以使用CONSTANT关键字来定义常量。
例如:DECLAREc_pi CONSTANT NUMBER := 3.1415926;BEGINNULL;END;1.3 变量和常量的命名规则在PL/SQL中,变量和常量的命名规则与其他编程语言类似。
变量和常量的名称必须以字母开头,并且只能包含字母、数字和下划线。
二、条件语句的使用2.1 IF语句IF语句用于根据条件执行不同的代码块。
例如:DECLAREv_age NUMBER := 18;BEGINIF v_age >= 18 THENDBMS_OUTPUT.PUT_LINE('You are an adult.');ELSEDBMS_OUTPUT.PUT_LINE('You are a minor.');END IF;END;2.2 CASE语句CASE语句用于根据不同情况执行不同代码块。
例如:DECLAREv_day_of_week NUMBER := 5;BEGINCASE v_day_of_weekWHEN 1 THEN DBMS_OUTPUT.PUT_LINE('Monday');WHEN 2 THEN DBMS_OUTPUT.PUT_LINE('Tuesday');WHEN 3 THEN DBMS_OUTPUT.PUT_LINE('Wednesday'); WHEN 4 THEN DBMS_OUTPUT.PUT_LINE('Thursday'); WHEN 5 THEN DBMS_OUTPUT.PUT_LINE('Friday');ELSE DBMS_OUTPUT.PUT_LINE('Weekend');END CASE;END;三、循环语句的使用3.1 FOR循环FOR循环用于执行一组代码块一定次数。
oracle PLSQL 中常量和变量的声明
一、常用数据类型:Number:数字类型Int:整数型Pls_integer:整数型,产生溢出的错误Binary_integer:整数型Char:定长字符,最长255个字符Varchar2:变长字符,最长2000个字符Long:变长字符,最长2GBDate:日期型Boolean:布尔型二、定义常量格式:常量名 constant 数据类型标识符 [not null] := 值例 : iCount constant Int not null:=200说明: 定义常量iCount,值为200;三、定义基本数据类型变量格式:变量名类型标识符 [not null] := 值例:sex Boolean not null :=0;说明:定义变量sex 值为0;四、复合数据类型变量1、使用%TYPE定义变量说明:这个型式是为了让变量的数据类型与表中的数据类型一致的,定义好以后,表中的数据类型改变,这个变量的数据类型也同时改变;格式:变量名用户名.表名.字段名%TYPE;例 : sex SCOTT.Tdetails.SEX%TYPE;说明:sex变量就与scott用户下的Tdetails表中的sex字段的类型一致;2、记录类型变量说明:将多个数据类型捆绑在一起的数据类型格式:TYPE 变量名 IS RECORD(变量名1 基本数据类型,变量名2 基本数据类型,……);例:TYPE tRecords IS RECORD(Name varchar2,Sex Boolean);使用这个变量的的方法: ttt tRecords;Select name,sex into ttt from classuser;这样就把classuser 表里的数据放到变量ttt中了.4、定义一维表类型数据DECLARE说明:相当于一维数组格式:TYPE 表类型 IS TABLE OF 类型 INDEX BY BINARY_INTEGER;例 : TYPE score IS TABLE OF INT(3) INDEX BY BINARY_INTEGER;定义了一个整数数组容量为3;访问的时候用 score(1)=1;score(2)=2; ……。
OraclePLSQL学习笔记(块、控制结构、过程、函数、包)
OraclePLSQL学习笔记(块、控制结构、过程、函数、包)Oracle PL/SQL 学习笔记⼀、PL/SQL 块块定义语法:DECLARE/*定义部分——定义常量、变量、复杂数据类型、游标*/BEGIN/*执⾏部分——PL/SQL语句和SQL语句*/EXCEPTION/*异常处理部分——处理运⾏错误*/END;注:PL/SQL中结束输⼊使⽤‘/’字符dbms_output.put_line(“输出的字符串内容”);dbms_output是提供的系统包;put_line 是该包中的过程,⽤于输出字符串信息。
当使⽤dbms_output包时必须要先激活服务器输出激活服务器输出语句: set serveroutput on⽰例:DECLAREstr varchar(5) --变量的定义BEGINSelect name INTO str FROM emp --INTO是将name的值赋值给strwhere empno=$no; --$no是替代变量EXCEPTIONWhen NO_DATA_FOUND then --PL/SQL预定义的异常类型dbms_output.put_line(“输出的字符串内容”);END;变量定义语法:变量名 [CONSTANT] 数据类型 [NOT NULL] [:=|DEFAULT 默认值或函数]--CONSTANT表⽰常量;--:=设置默认值%TYPE属性⽰例:Name emp.ename%TYPE --name与emp表中ename列的类型和长度相同Sex Name%TYPE --sex与name类型和长度相同%ROWTYPE属性语法:变量名表名%ROWTYPE⽰例:Str T1%ROWTYPE--str变量对应T1表中所有列,并且该表中的所有列的类型与长度相同PL/SQL中使⽤的操作符:= --赋值操作符=> --关联操作符|| --连接操作符PL/SQL游标游标定义语法:CURSOR 游标名 IS SQL语句游标名%ISOPEN 判断游标是否已经打开游标名%FOUND SQL语句有作⽤⾏市,其属性值为TRUE;游标名%NOTFOUND SQL语句没有作⽤⾏市,其属性值为TRUE;游标名%ROWCOUNT 返回SQL语句所作⽤的总⾏数注:游标名默认为‘SQL’⼆、 PL/SQL控制语句1、分⽀语句IF 条件 THEN 执⾏操作ELSEIF 条件THEN 执⾏操作ELSE 执⾏操作END IF;2、多重分⽀语句CASE 表达式WHEN 要判断的值 THEN 执⾏操作WHEN 要判断的值 THEN 执⾏操作ELSE 执⾏操作END CASE;3、循环语句⼀WHILE 条件 LOOP执⾏操作···END LOOP;4、循环语句⼆FOR 变量 IN [REVERSE] 起点值 ..终点值 LOOP执⾏操作END LOOP;注:REVERSE表⽰由终点值到起点值循环; ..是固定格式;三、存储过程创建过程语法:create [or replace] procedure procedure_name [ (argment [ { in| in out }] type, argment [ { in | out | in out } ] type { is | as } <类型.变量的说明> ( 注: 不⽤ declare 语句 ) Begin <执⾏部分> exception <可选的异常处理说明> end; l 这⾥的IN表⽰向存储过程传递参数,OUT表⽰从存储过程返回参数。
PLSQL编程基础(个人笔记)
∙声明变量语法:变量名[CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]∙赋值:o常量:常量名CONSTANT NUMBER := 0;(定义一个数值型,值为0的常量)o变量:▪直接赋值x:=200;▪通过SQL SELECT INTO 或FETCH INTO给变量赋值∙数据类型:o numbero charactero date/timeo boolean∙操作符:o算术操作符:+、-、*、/、**(乘方)o关系操作符:<、<=、>、>=、=、!=、<>、:=o比较操作符:is null、between、like、ino逻辑操作符:and、or、not∙流程控制:o条件控制:▪if...then...end if;▪if...then...else...end if;▪if...elsif...else...then...end if;o循环控制:▪loop...end loop;▪while...loop...end loop;▪for...loop...end loop;(for counter in [reverse]--反序 start_rangeend_range loop...end loop)o循环语句可以配合exit或者exit when...使用∙标签:<<标签名>>,增加易读性,也可以配合goto语句使用∙PL/SQL嵌套块:begin...end被看作一个PL/SQL程序块,嵌套块要注意的是变量,定义在最外部程序块中的变量可以在所有子块中使用,如果在子块中定义了与外部程序块变量相同的变量名,在执行子块时将使用子块中定义的变量。
子块中定义的变量不能被父块引用。
∙异常处理:o抛出异常:▪通过PL/SQL运行时引擎▪使用RAISE语句▪使用RAISE_APPLICATION_ERROR存储过程o自定义异常示例:DECLAREinventory_too_low EXCEPTION; ---其他声明语句BEGIN…IF order_rec.qty>inventory_rec.qty THENRAISE inventory_too_low;END IF;…EXCEPTIONWHEN inventory_too_low THENorder_rec.staus:='backordered';…o异常处理:EXCEPTIONWHEN exception_name THENCode for handing exception_name[WHEN another_exception THENCode for handing another_exception][WHEN others THENCode for handing any other exception.]o异常传递:没有处理的异常将沿检测异常调用程序传播到外面,在异常部分抛出的异常将控制转到上一层的异常部分。
PLSQL——02、变量的使用
PLSQL——02、变量的使⽤⼀、变量介绍在编写pl/sql程序时,可以定义变量和常量;在pl/sql程序中包括有:标量类型(scalar)复合类型(composite) --⽤于操作多条记录参照类型(reference) --⽤于操作多条记录,存放指针lob(large object)⼆、标量类型变量初始化和关键字:identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];identifier 变量名[CONSTANT] 指定常量。
需要指定它的初始值,且其值是不能改变的[NOT NULL] 必须初始化,不能被赋予NULL值:= 赋值操作符DEFAULT ⽤于指定初始值expr :指定初始值的pl/sql表达式,可以是⽂本值、其它变量、函数等演⽰:declarev_city varchar2(30) NOT NULL :='Beijing';v_location varchar2(13) :='Atlanta';v_deptno number(2) NOT NULL :=10;v_mgr number(6) DEFAULT100;v_hiredate date;v_date date := to_date('20110117','yyyymmdd');v_rowid rowid;b_flag boolean;beginnull;end;/PL/SQL变量和数据库变量长度区别CHAR 32767BYTEVARCHAR2 32767BYTELONG 32760BYTE 2GLONG RAW 32760BYTE 2G列名的优先级别⾼于变量!所以不要重名declareename varchar2(20) :='KING';begindelete emp where ename=ename;end;/变量打印例题⼀:创建⼀个匿名PL/SQL块,将下列字符输出到屏幕:"today is : 在此处显⽰当前时间"set serveroutput on----打开允许客户端输出beginDBMS_OUTPUT.PUT_LINE('today is : '||sysdate);end;/变量的作⽤范围declarev_var1 number :=123;begindbms_output.put_line('OUT: v_var1 :'||v_var1);declarev_var2 number :=456;begindbms_output.put_line('IN: v_var1 :'||v_var1);dbms_output.put_line('IN: v_var2 :'||v_var2);END;-- dbms_output.put_line('IN: v_var2 :'||v_var2); 内部块中的变量不能被外部块使⽤. 去掉注释则报错end;/输出结果:OUT: v_var1 :123IN: v_var1 :123IN: v_var2 :456PL/SQL procedure successfully completed.语句块的标签标签加载⼀个语句块开始的位置上。
PLSQL基本操作手册
PL/SQL基本操作手册PL/SQL(Procedural Language/Structured Query Language)是一种基于SQL 语言的过程编程语言,它在Oracle数据库中非常常见。
本文将介绍PL/SQL的基本操作,如变量、控制语句、游标等。
变量和常量变量可以使用DECLARE语句声明。
在代码中,变量必须指定它们的类型,例如NUMBER、VARCHAR2或BOOLEAN。
DECLAREv_employee_id NUMBER:=100;v_employee_name VARCHAR2(50) :='John Doe';v_is_hired BOOLEAN:=TRUE;BEGIN-- code goes hereEND;常量是一个不可变的参数,可以使用CONSTANT关键字定义。
常量的值不会在程序中更改。
DECLAREc_tax_rate CONSTANT NUMBER(4, 2) :=0.08;BEGIN-- code goes hereEND;控制语句控制语句提供了决策和循环结构。
IF语句IF语句用于对一个表达式进行测试,以确定哪个分支应该执行。
IF expression THEN-- code goes hereELSIF expression THEN-- code goes hereELSE-- code goes hereEND IF;CASE语句CASE语句用于检查多个可能的条件。
CASE expressionWHEN value1 THEN-- code goes hereWHEN value2 THEN-- code goes hereELSE-- code goes hereEND CASE;LOOP语句LOOP语句用于无限的循环,可以通过某些条件来终止循环。
LOOP-- code goes hereEXIT WHEN expression;END LOOP;WHILE语句WHILE语句用于执行一系列语句,只要指定条件为TRUE。
PLSQL中的变量
在PL/SQL中处理变量:●在声明部分声明和初始化变量●在执行部分为变量赋新值,或在表达式中使用变量●在异常处理部分也可以使用变量●通过参数把值传递到PL/SQL 块中●通过输出变量或者参数将值传出PL/SQL块PL/Sql中的变量类型:●简单变量●复合(组合)变量简单变量:简单变量不包括任何组件,只能保存一个值简单变量类型:基本类型包括三大类:字符,数字,日期BINARY_INTEGER整形数字NUMBER (precision,scale)数字类型(数值长度、小数位数)CHAR (maximum_length)定长字符类型VARCHAR2(maximum_length) 变长字符类型DATE日期类型LONG长字符类型LONG RAW长二进制类型CLOB/BLOB/BFI大对象类型(字符大对象,二进制大对象,操作系统文件大对象) BOOLEAN布尔类型,有效值为TRUE,FALSE,NULL简单变量的声明:v_gender CHAR(1);v_count BINARY_INTEGER := 0;v_total_sal NUMBER(9,2) := 0; 9表示数据长度,2表示保留小数位v_order_date DATE := SYSDATE + 7; 天数+7c_tax_rate CONSTANT NUMBER(3,2) := 8.25;v_valid BOOLEAN NOT NULL := TRUE;复合变量:复合变量也叫做组合变量。
在复合变量中包含多个内部的组件,每个组件都可以单独存放值。
一个复合变量可以存放多个值与简单变量类型不同,复合变量类型不是数据库中已经存在的数据类型,所以复合变量在声明类型之前,首先要创建使用到的复合类型,然后将变量声明为复合变量 复合类型被创建后,可以被使用多次,定义多个变量复合变量类型:●表类型table●记录类型record表类型:TABLE:表类型类似于其他编程语言中的数组类型由两个组件组成:1.数据类型为BINARY_INTEGER(整形数字)的主键2.数据类型为一个确定的简单类型的列Table类型没有长度限制,可以动态增长。
PLsql数据.类型
目录
LOGO 二、 总结
处理数据: 1:单行单列(%TYPE属性) 2:单行多列(PL/SQL记录) 3:多行单列(集合类型) 4:多行多列(2+3)
目录
谢谢大家
JUNE-ZHENG 作品
BINARY_INTEGER:1:用于整数 2:pl/sql中定义表
目录
LOGO
二、 复合变量:存放多值变量
PL/SQL记录 一、
1:PL/SQL 表 2:嵌套表 3:变长数组
集合类型 二、
目录
LOGO 二、 例句
1:%TYPE属性:v_sal emp.sal%TYPE 2:PL/SQL记录:a:TYPE emp_record_type IS RECORD(...); b:%ROWTYPE: emp_record emp%ROWTYPE; 3:PL/SQL表: TYPE emp_table_type IS TABLE OF emp.ename%type INDEX BY BINARY_ INTEGER;
目录
VARCHAR:1:长度可变 2:长度最大值为:32767 3:pl/sql中数值不超过4000
CHAR:1:长度固定 2:长度最大值为:32767 3:n默认为1 4:pl/sql中数值不超过2000
NUMBER:1:p表精度(总位数) · 2:s标度(小数位)
LOGO
DATE:1:定义时间和日期 2:固定长度是7位 BOOLEAN:1:值为false,true,null 2:pl/sql中表列不能采用
夏远明plsqlplsql数据类型与变量数据类型与变量junezheng作品目录一标量类型二复合类型三引用类型logoplsql数据类型分类分类
PL/SQL数据类型与变量
plsql笔记
plsql笔记1.声明部分:主要⽤于声明变量、常量、数据类型、游标、异常处理名称以及本地(局部)⼦程序定义等。
2.可执⾏部分执⾏部分:是PL/SQL块的功能实现部分。
该部分通过变量赋值、流程控制、数据查询、数据操纵、数据定义、事务控制、游标处理等实现块的功能。
3.异常处理部分:异常处理部分⽤于处理该块执⾏过程中产⽣的异常。
执⾏部分是必须的,⽽声明部分和异常部分是可选的;PL/SQL的字符集包括:⼤⼩写字母:A~Z,a~z数字:0~9空⽩:制表符、空格和回车数字符号:+ - * / 〈〉 =标点符号:~ ! @ # $ % ^&* ()_ | { } [ ] ?;:, . “ ‘1.1标识符⽤于定义PL/SQL变量、常量、异常、游标名称、游标变量、参数、⼦程序名称和其他的程序单元名称等。
1.2在PL/SQL程序中,标识符是以字母开头的,后边可以跟字母、数字、美元符号($)、井号(#)或下划线(_),其最⼤长度为30个字符,并且所有字符都是有效的。
数字类型字符类型⽇期/区间类型⾏标识类型布尔类型原始类型LOB类型引⽤类型记录类型集合类型%TYPE与%ROWTYPE分类数据类型数字类型 NUMBER、BINARY_NUMBER PLS_NUMBER字符类型 VARCHAR2、CHAR、LONG、NCHAR、NVARCHAR⽇期/区间类型 DATE、TIMESTAMP、INTERVAL⾏标识类型 ROWID、UROWID布尔类型 BOOLEAN(TRUE、FALSE、NULL)原始类型 RAW、LONG RAWLOB类型 CLOB、BLOB、NCLOB、BFILE引⽤类型 REF CURSOR,REF object_type。
记录类型 RECORD集合类型 TABLE、VARRAY变量定义的⼀般格式variable_name [CONSTANT] datatype [NOT NULL] [DEFAULT|:=expression];说明1.1变量或常量名称是⼀个PL/SQL标识符,应符合标识符命名规范;1.2每⾏只能定义⼀个变量;1.3如果加上关键字CONSTANT,则表⽰所定义的是⼀个常量,必须为它赋初值;1.4如果定义变量时使⽤了NOT NULL关键字,则必须为变量赋初值;1.5如果变量没有赋初值,则默认为NULL;1.6使⽤DEFAULT或“:=”运算符为变量初始化。
PLSQL数据类型
PLSQL数据类型 在定义变量或常量时,必须要指定⼀个数据类型,PL/SQL是⼀种静态类型化的程序设计语⾔,静态类型化⼜称为强类型化,也就是说类型会在编译时⽽不是在运⾏时被检查,这样在编译时便能发现类型错误,以便增强程序的稳定性。
PL/SQL提供多种数据类型,这些类型可以分为如下4⼤类: 标量类型:⽤来保存单个值的数据类型,包含字符型、数字型、布尔型和⽇期型。
复合类型:复合类型是具有内部⼦组件的类型,可以包含多个标量类型作为其属性。
复合类型包含记录、嵌套表、索引表和变长数组。
引⽤类型:引⽤类型是⼀个指向不同存储位置的指针,引⽤类型包含REF CURSOR和REF这两种。
LOP类型:LOP类型⼜称⼤对象类型,⽤来处理⼆进制和⼤于4GB的字符串。
1.CHAR 存储固定的字符数据,CHAR有⼀个可选的整型值参数⽤来指定字符的长度,最⼤32767个字节,CHAR的声明语法如下: CHAR[ (maximum_size [CHAR | BYTE] ) ] maximum_size⽤于指定字符的长度,其值不能是常量或变量,只能是1~32767之间的整型数字,该参数的默认值为1。
注意:尽管在PL/SQL中可以向CHAR类型指定32767个长度的字符,但是在Oracle数据库中,CHAR类型字段的最⼤长度为2000个字节,所以不能往数据库插⼊超过2000个字节的字符。
2.VARCHAR2 VARCHAR2变量存储变长字符串,当定义⼀个变长字符串时,必须要指定字符串的最⼤长度,其值范围为1~32767个字节,在指定长度时也可以选择性地指定CHAR或BYTE参数,语法如下: VARCHAR2[ (maximum_size [CHAR | BYTE] ) ] maximum_size⽤于指定最⼤的长度,不能使⽤常量或变量来指定这个值,必须使⽤整型数值。
与定长的CHAR类型的最⼤的不同在于实际的基于字节的长度依据实际赋给变量的具体长度⽽定,这依赖于数据库的字符集设置,例如Unicode UTF-8字符集使⽤3个字节表⽰⼀个字符。
oracle PLSQL 中常量和变量的声明
一、常用数据类型:Number:数字类型Int:整数型Pls_integer:整数型,产生溢出的错误Binary_integer:整数型Char:定长字符,最长255个字符Varchar2:变长字符,最长2000个字符Long:变长字符,最长2GBDate:日期型Boolean:布尔型二、定义常量格式:常量名 constant 数据类型标识符 [not null] := 值例 : iCount constant Int not null:=200说明: 定义常量iCount,值为200;三、定义基本数据类型变量格式:变量名类型标识符 [not null] := 值例:sex Boolean not null :=0;说明:定义变量sex 值为0;四、复合数据类型变量1、使用%TYPE定义变量说明:这个型式是为了让变量的数据类型与表中的数据类型一致的,定义好以后,表中的数据类型改变,这个变量的数据类型也同时改变;格式:变量名用户名.表名.字段名%TYPE;例 : sex SCOTT.Tdetails.SEX%TYPE;说明:sex变量就与scott用户下的Tdetails表中的sex字段的类型一致;2、记录类型变量说明:将多个数据类型捆绑在一起的数据类型格式:TYPE 变量名 IS RECORD(变量名1 基本数据类型,变量名2 基本数据类型,……);例:TYPE tRecords IS RECORD(Name varchar2,Sex Boolean);使用这个变量的的方法: ttt tRecords;Select name,sex into ttt from classuser;这样就把classuser 表里的数据放到变量ttt中了.4、定义一维表类型数据DECLARE说明:相当于一维数组格式:TYPE 表类型 IS TABLE OF 类型 INDEX BY BINARY_INTEGER;例 : TYPE score IS TABLE OF INT(3) INDEX BY BINARY_INTEGER;定义了一个整数数组容量为3;访问的时候用 score(1)=1;score(2)=2; ……。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8 dbms_output.put_line('雇员名:'|| ename_table(-1));
9 end;
10 /
雇员名:SCOTT
PL/SQL 过程已成功完成。
3.嵌套表
--嵌套表(Nested Table)类似于高级语言中的数组.需要注意,高级语言数组和嵌套表的下标都不能为负值;高级语言的元素个数是有限制的,而嵌套表的元素个数是没有限制的.嵌套表和PL/SQL表非常类似,但嵌套表可以作为表列的数据类型,而PL/SQL表不能作为表列的数据类型.当在表列中使用嵌套表时,必需首先使用CREATE TYPE语句建立嵌套表类型.
11 end;
12 /
雇员名:SCOTT
PL/SQL 过程已成功完成。
定义一个PL/SQL记录类型,并定义这个类型包含了三个成员,并emp_record是emp_record_type的变量,然后执行部分,并引用记录变量emp_record的成员name(个人理解)
2.PL/SQL表
4 ename_table ename_table_type; <==ename_table为PL/SQL表变量,
5 begin
6 select ename into ename_table(-1) from emp <==ename_table(-1)表示下标为-1的元素
SQL> declare
2 type emp_record_type is record( <==emp_record_type是PL/SQL记录类型
3 name emp.ename%type, <==\
4 salary emp.sal%type, |<==name,salary,title是该PL/SQL记录类型包含的三个成员
8 select ename,sal,job into emp_record
9 from emp where empno=7788;
10 dbms_output.put_line('雇员名:'||emp_); <==emp_表示引用记录变量emp_record的成员name.(emp_record_)
例:
SQL> create or replace type emp_type as object( <==对象类型emp_type用于存储雇员信息,
2 name varchar2(10),salary number(6,2),
3 hiredate date);
4 /
数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
例:
SQL> create type article_type as object( <==article_type用于存储文章信息
2 titile varchar2(30),pubdate date);
3 /
类型已创建。
SQL> desc article_type
名称 是否为空? 类型
DNAME VARCHAR2(10)
EMPLOYEE EMP_ARRAY
4.VARRAY
--varray(编程数组)类似于嵌套表,可以作为表列和对象类型属性的数据类型.但需要注意,嵌套表的元素个数没有限制,而varray的元素个数是有限制的,当使用varray时,必须首先建立varray类型.
--PL/SQL表类似于高级语言中的数组.需要注意,PL/SQL表与高级语言的数组有所区别,高级语言数组的下标不能为负,但PL/SQL表的下标可以为负值;高级语言数组的元素个数有限制,而PL/SQL表的元素个数没有限制,并且其下标没有上下限.当使用PL/SQL表时,必需首先在定义部分定义PL/SQL表类型和PL/SQL表变量,然后在执行部分中引用该PL/SQL表变量.
表已创建。
SQL> desc author
名称 是否为空? 类型
----------------- -------- ------------
ID NUMBER(6)
NAME VARCHAR2(10)
1.PL/SQL记录
--PL/SQL记录 类似于高级语言中的结构,每个PL/SQL记录一般都包含多个成员.当使用PL/SQL记录时,首先需要在定义部分定义记录类型和记录变量,然后在执行部分引用该记录变量.需注意,当引用记录成员时,必须要加记录变量作为前缀(记录变量.记录成员).
例:
SQL> set serveroutput on
例:
SQL> declare
2 type ename_table_type is table of emp.ename%type <==ename_table_type为PL/SQL表类型;emp.ename%type指定了PL/SQL表元素的数据类型和长度
3 index by binary_integer;
类型已创建。
SQL> create or replace type emp_array is table of emp_type; <==emp_array是基于emp_type的嵌套表类型,用于存储多个雇员信息
2 /
类型已创建。
当建立了嵌套表类型之后,就可以在表列或对象属性中将其作为用户自定义数据类型来引用.但需要注意,当使用嵌套表类型作为表列时,必须要为其指定专门的存储表如下:
2 /
类型已创建。
SQL> desc article_array
article_array VARRAY(20) OF ARTICLE_TYPE
名称 是否为空? 类型
----------------- -------- ------------
TITILE VARCHAR2(30)
5 ;
表已创建。
SQL> desc employee
名称 是否为空? 类型
----------------- -------- ------------
NAME VARCHAR2(10)
SALARY NUMBER(6,2)
int a[10]; 说明整型数组a,有10个元素。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; 说明字指用于存放多个值的变量.当定义符合变量时,必需要使用PL/SQL的复合数据类型.PL/SQL包括PL/SQL记录,PL/SQL表,嵌套表以及VARRAY(变长数组;动态数组 )等四种复合数据类型.
----------------- -------- ------------
TITILE VARCHAR2(30)
PUBDATE DATE
SQL> create type article_array is varray(20) of article_type; <==article_array则用于存储多篇文章的信息,并且最多可以存储20篇文章
ARTICLE ARTICLE_ARRAY
SQL>
注意,嵌套表列数据需要存储在专门的存储表中,而varray数据则与其他列数据一起存放在表段中.
VARRAY: 变长数组;动态数组
record: 纪录;
SQL> create table department(
2 deptno number(2),dname varchar2(10),
3 employee emp_array)
4 nested table employee store as employee <==employee=存储表
HIREDATE DATE
SQL> desc department
名称 是否为空? 类型
----------------- -------- ------------
DEPTNO NUMBER(2)
PUBDATE DATE
当建立了VARRAY类型之后,可以在表列或对象属性中将其作为用户自定义数据类型来引用
SQL> create table author(id number(6),name varchar2(10),article article_array);
5 title emp.job%type); <==/
6 emp_record emp_record_type; <==emp_record是记录变量(emp_record是emp_record_type的变量而emp_record_type是一个记录类型)
7 begin