procedure 过程化
pl/sql ------过程化sql 存储过程
proc/c++ ------使用c 或者c++语言访问oracle
SQLJ 、JDBC ------java访问数据库的技术
ODBC ADO ------vc中访问数据库的技术
oci ------oracle 底层的连接接口
四个关键字
declare
/*申明区*/ 定义变量 或者类型
begin
/*执行区*/ 执行业务逻辑
exception
/*异常处理区*/ 处理异常
end;
写一个plsql程序:
begin
dbms_output.put_line('hello plsql!!');
end;
打开输出
set serveroutput on
SQL>/
begin
dbms_output.put_line('hello plsql!!');
end;
/
执行过程:plsql块 先整个的发送给plsql语句执行器
plsql语句执行器只指向plsql语句 是普通
sql语句则由plsql引擎交给sql语句执行器
最后由plsql引擎整理出结果交给终端
编程工具:
sqlplus 命令行下的工具
sqldeveloper sqlnavigator sqlprogram
标识符是用来给变量 类型 游标 等对象命名的
---------------------------------------------
plsql中的变量定义 -----申明区
declare
var_i number:=100;
var_name varchar2(30);
begin
var_i:=1000;
var_name:='test';
dbms_output.put_line(var_i||':'||var_name);
end;
/
变量的名字要在类型之前
赋值使用:=
拼接符号可以直接拼接数字和字符串
oracle sql 中的数据类型可以直接在plsql使用
标量类型:
varchar2 char number date
boolean ----true false null
binary_integer -----二进制整数
number
引用类型:
ref cursor
组合类型:
record table
大类型:
BLOB
CLOB
BFILE
declare
var_i constant number:=100;
var_name varchar2(30);
begin
var_name:='test';
dbms_output.put_line(var_i||':'||var_name);
end;
/
declare
var_i constant number:=100;
var_name varchar2(30) not null:='gg';
begin
var_name:='test';
dbms_output.put_line(var_i||':'||var_name);
end;
/
----------------------------------------------
定义两个变量
一个和s_emp表中的id是一个类型
一个和s_emp表中的first_name 是一个类型
赋值并输出
declare
var_id number(7):=0;
first_name varchar2(25);
begin
var_id:=1;
select first_name into first_name
from s_emp where id=var_id;
dbms_output.put_line(var_id||'@'||first_name);
end;
/
----------------------------
不查看s_emp表
定义两个变量
一个和s_emp表中的id是一个类型
一个和s_emp表中的first_name 是一个类型
赋值并输出
%type -------用来取得表中的字段对应的类型
declare
var_id s_emp.id%type:=0;
first_name s_emp.first_name%type;
begin
var_id:=1;
select first_name into first_name
from s_emp where id=var_id;
dbms_output.put_line(var_id||'@'||first_name);
end;
/
------------------------------------------------
record 类型
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
begin
var_emp.id:=100;
var_emp.first_name:='zhangsan';
var_emp.salary:=10000;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
end;
查询的数据和记录类型的字段数相同
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
begin
/*使用查询赋值*/
select id,first_name,salary into var_emp
from s_emp where id=1;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
end;
查询的数据 比 记录类型的字段少
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
begin
/*使用查询赋值*/
select id,salary into var_emp.id,var_emp.salary
from s_emp where id=1;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
end;
--------
记录类型变量的赋值
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
var_emp1 emprec;
begin
/*使用查询赋值*/
select id,first_name,salary into var_emp
from s_emp where id=1;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
/*整体赋值*/
/*var_emp1:=var_emp;*/
dbms_output.put_line(var_emp1.id||':'||
var_emp1.first_name||':'||var_emp1.salary);
end;
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
var_emp1 emprec;
begin
/*使用查询赋值*/
select id,first_name,salary into var_emp
from s_emp where id=1;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
/*单个赋值*/
var_emp1.first_name:=var_emp.first_name;
var_emp1.salary:=var_emp.salary;
dbms_output.put_line(var_emp1.id||':'||
var_emp1.first_name||':'||var_emp1.salary);
end;
--------------------------------------------
把s_dept的id是50的所有数据保存
一个记录类型定义的变量中
并打印输出这些信息
想一下s_emp中id=1的所有数据怎么放
想一下 如果要把一张表的一条记录的数据全部取出来
定义一个记录类型 在定义一个变量保存数据
pl/sql ------过程化sql 存储过程
proc/c++ ------使用c 或者c++语言访问oracle
SQLJ 、JDBC ------java访问数据库的技术
ODBC ADO ------vc中访问数据库的技术
oci ------oracle 底层的连接接口
四个关键字
declare
/*申明区*/ 定义变量 或者类型
begin
/*执行区*/ 执行业务逻辑
exception
/*异常处理区*/ 处理异常
end;
写一个plsql程序:
begin
dbms_output.put_line('hello plsql!!');
end;
打开输出
set serveroutput on
SQL>/
begin
dbms_output.put_line('hello plsql!!');
end;
/
执行过程:plsql块 先整个的发送给plsql语句执行器
plsql语句执行器只指向plsql语句 是普通
sql语句则由plsql引擎交给sql语句执行器
最后由plsql引擎整理出结果交给终端
编程工具:
sqlplus 命令行下的工具
sqldeveloper sqlnavigator sqlprogram
标识符是用来给变量 类型 游标 等对象命名的
---------------------------------------------
plsql中的变量定义 -----申明区
declare
var_i number:=100;
var_name varchar2(30);
begin
var_i:=1000;
var_name:='test';
dbms_output.put_line(var_i||':'||var_name);
end;
/
变量的名字要在类型之前
赋值使用:=
拼接符号可以直接拼接数字和字符串
oracle sql 中的数据类型可以直接在plsql使用
标量类型:
varchar2 char number date
boolean ----true false null
binary_integer -----二进制整数
number
引用类型:
ref cursor
组合类型:
record table
大类型:
BLOB
CLOB
BFILE
declare
var_i constant number:=100;
var_name varchar2(30);
begin
var_name:='test';
dbms_output.put_line(var_i||':'||var_name);
end;
/
declare
var_i constant number:=100;
var_name varchar2(30) not null:='gg';
begin
var_name:='test';
dbms_output.put_line(var_i||':'||var_name);
end;
/
----------------------------------------------
定义两个变量
一个和s_emp表中的id是一个类型
一个和s_emp表中的first_name 是一个类型
赋值并输出
declare
var_id number(7):=0;
first_name varchar2(25);
begin
var_id:=1;
select first_name into first_name
from s_emp where id=var_id;
dbms_output.put_line(var_id||'@'||first_name);
end;
/
----------------------------
不查看s_emp表
定义两个变量
一个和s_emp表中的id是一个类型
一个和s_emp表中的first_name 是一个类型
赋值并输出
%type -------用来取得表中的字段对应的类型
declare
var_id s_emp.id%type:=0;
first_name s_emp.first_name%type;
begin
var_id:=1;
select first_name into first_name
from s_emp where id=var_id;
dbms_output.put_line(var_id||'@'||first_name);
end;
/
------------------------------------------------
record 类型
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
begin
var_emp.id:=100;
var_emp.first_name:='zhangsan';
var_emp.salary:=10000;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
end;
查询的数据和记录类型的字段数相同
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
begin
/*使用查询赋值*/
select id,first_name,salary into var_emp
from s_emp where id=1;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
end;
查询的数据 比 记录类型的字段少
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
begin
/*使用查询赋值*/
select id,salary into var_emp.id,var_emp.salary
from s_emp where id=1;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
end;
--------
记录类型变量的赋值
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
var_emp1 emprec;
begin
/*使用查询赋值*/
select id,first_name,salary into var_emp
from s_emp where id=1;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
/*整体赋值*/
/*var_emp1:=var_emp;*/
dbms_output.put_line(var_emp1.id||':'||
var_emp1.first_name||':'||var_emp1.salary);
end;
declare
/*定义一个record类型*/
type emprec is record(
id s_emp.id%type,
first_name s_emp.first_name%type,
salary s_emp.salary%type
);
/*使用emprec类型 定义变量*/
var_emp emprec;
var_emp1 emprec;
begin
/*使用查询赋值*/
select id,first_name,salary into var_emp
from s_emp where id=1;
dbms_output.put_line(var_emp.id||':'||
var_emp.first_name||':'||var_emp.salary);
/*单个赋值*/
var_emp1.first_name:=var_emp.first_name;
var_emp1.salary:=var_emp.salary;
dbms_output.put_line(var_emp1.id||':'||
var_emp1.first_name||':'||var_emp1.salary);
end;
--------------------------------------------
把s_dept的id是50的所有数据保存
一个记录类型定义的变量中
并打印输出这些信息
想一下s_emp中id=1的所有数据怎么放
想一下 如果要把一张表的一条记录的数据全部取出来
定义一个记录类型 在定义一个变量保存数据