plsql基础(代码块,select into 数据类型,execute immediate)

一定义:

语法:

declare
	--声明部分
begin
--代码块
exception
异常处理
end;

变量和常量:

变量和常量都是用来保存数据的
语法:
变量名 数据类型:=初始值;
变量可以在程序中修改它存储的值
常量:不可修改,在声明是必须包含常量名
语法:
常量名 constant 数据类型:=常量值;
标识符命令规范:
(1)对象名以字母开头,可以有数字,——,#等特殊字符
(2)长度不能超过30个英文字符
(3)不能以数字开头
(4)避免使用oracle关键字
sql dbms_output.put(字符串),--在控制台输出一个字符串内容 ,输出晚不换行,但是不换行不输出 dbms_output.put_line(z字符串)在控制台输出一个字符串内容,输出之后换行

declare
   --声名一个变量,并给变量一个初始值 'PLSQL'
   v varchar2(30):='PLSQL';
   --声名一个常量
   p constant number(7,6):=3.141591;
begin
   /*
   --能过dbms_output.put_line,输出变量v的值
   dbms_output.put_line(v);
   --修改变量的值
   v:='oracle';
   dbms_output.put_line(v);
   
   dbms_output.put_line(p);
   --p:=3; 常量值不可修改
   */
   --输出不换行
   dbms_output.put(v);--输出变量v的值
   dbms_output.put('smith');
   dbms_output.put(' ni hao');
   --dbms_output.put_line(''); --使用dbms_output.put_line()打印空字符串,让其换行
   dbms_output.new_line(); --换行
end;

&:输入符号

注意:
数字类型:&变量名
字符串类型:‘&变量名’

select * from emp where deptno=&部门编号;

二 plsql中的数据类型

1.基础类型
1数字类型:
number(长度,精度):最大长度38,最小默认1
integger:整数类型
pls_integer:整数类型
binary_interger:整数类型
filoat:浮点型(小数类型)
2.字符串类型
varchar2(长度):变长字符串类型,最大长度4000个字符(英文)
char(长度):定长字符串类型
long:可以存放2G的内容(oralce不建议使用的类型)
CLOB:存放大文本内容(txt,word),可能会在代码块中出现
blob:二进制方式存储大文件(音频,视频文件)
3.日期类型
date:日期类型
timestamp:时间类型
4.布尔类型
boolean:只有三个值,true,false null;2
2.复杂类型
5.记录类型:
record:可以存放多个值;
记录类型:可以存放多个值,但都属于一条数据
定义类型语法

type 类型名称 is record(
·属性名 数据类型;
.........;

变量声名
变量名 类型名;
记录类型的使用;
变量名.属性名;—取一个记录类型的属性值
变量名.属性名:=值;

     declare
        --定义一个记录类型
        type  amtype is record(
           name varchar2(30),
           job varchar2(50),
           sal number(5)
        );
        --声名一个记录类型变量
        v amtype;
     begin
        v.name:='张三';
        v.job:='CLERK';
        v.sal:=1234;
        --记录类型变量不能直接打印
        dbms_output.put_line(v.name||','||v.job||','||v.sal);
     end;

6.%type类型
%type:取其他对象的类型,作为变量类型(取表中的一列数据类型,作为变量类型)
对象名%type(类型)
注意:
只能取单一类型
emp.job%type–取emp表中job列的数据类型,作为一个新的类型varchar(9)
7.%rowtype类型
%rowtype类型:它是记录类型和%type的类型的结合;取一个对象的类型作为变量的类型
表名%rowtype;
emp%rowtype

三select into语句:

1.语法

select 列名,列名,…into 变量,变量,…from 表名 where 。。group by。。。order by。。
注意:select into语句每次只能查询一条数据,不能多不能少

    declare
        --声名一个变量保存,员工的姓名
        v_ename varchar2(20);
     begin
        select ename into v_ename from emp where empno=7369; --将7369的员工编号查询到变量v_ename中
        --打印员工姓名
        dbms_output.put_line(v_ename);
     end; 
     

代码块部分:sql语句,流程控制语句
sql语句的扫行:
1.select into语句(selec)
2.insert,update,delete语句(可以直接在代码块中扫行)

begin
   insert into dept values(50,'dept1','loc');
 end;

3.使用execute immediate 执行

语法:
execute immediate sql语句(字符串类型)[into 变量] [using 值];
into 字句和select into 中的一样:用于将select查询结果保存到变量中
using子句:用于给sql语句传递参数
ddl语句不能直接在plsql代码块中运行,但是可以放在execute immediate 中运行

declare
  --声名一个变量保存员工的姓名
  v_ename varchar2(20);
begin
  execute immediate 'select ename from emp where empno=7369' into v_ename;
  --打印查询结果,打印变量的值
  dbms_output.put_line(v_ename);
end;

execute immediate 语句中sql点位符
:n 表示点位符,n一般情况下是一个正整数,也可以是其他字符串,如果sql语句中包含点位符,那么必须使用using字句给点位符传值;

begin
  execute immediate 'delete from emp where empno=:1' using 7369;--delete from emp where empno=7369
end;

oracle字符串中包含字符串的情况:
1)使用两个单引号表示一个单引号
2)使用chr()函数来获取一个单引号chr(39)
execute immediate 和直接执行的sql语句的
1)ddl语句不能直接在plsql代码块中运行,但是可以放在execute immediate中运行
2)当sql语句操作的表,是使用execute immediate动态创建的,那么只能在execute immediate中运行
3)当将表名放入变量中时,这是必须使用execute immediate 语句来运行

begin
  --创建一张ttt3的表
  execute immediate 'create table ttt3(id number(11),name varchar2(30))';
  --给表里添加数据
  insert into ttt3 values(1,'plsql');  ---不允许运行,但是可以在execute immediate中运行
end; 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值