今天老師又帶我們回顧了儲存過程方面的知識:
1)我們之所以要學習儲存過程是因為使用儲存過程可以一次性執行成批的sql
語句,不僅節省了我們的時間而且也提高了伺服器的操作速度。
2)儲存過程的優點:
1、批處理,減少客戶和伺服器之間的交流次數;
2、伺服器端執行,移植性好;
3、安全要求高的行業;
4、包含流程控制結構的
sql語句的集合
3)儲存過程的建立:
語法格式: create database
create table
儲存函式
;---每條語句的結束
宣告新的結束符(
任選,避免在
mysql
環境下有特殊含義)
delimiter(分隔符
) $$
delimiter //
delimiter ;//
create procedure(過程
) p_name(in c_name
資料型別)
注意:儲存過程的主體部分,裡面包含在過 程呼叫中必須執行的語句,以begin
開始end
結束。在儲存過程體只有乙個
sql語句時可以 省略
begin_end
標誌。儲存過程可以不加引數但名稱後面的括號不可以省略,引數的不要等於列的名字。在建立儲存過程前先使用
deliminter
命令將mysql
語句的結束標誌修改為其他符號。語法格式為:
deliminter $$ ($$
是使用者定義的結束符)
要想恢復使用分號作為結束符語法格式為: deliminter ;
例; deliminter //
create procedure delete_student(in xh char(6))
begin
delete from xs where 學號
=xh;
end //
deliminter ;
4)建立儲存過程的步驟:
1、檢驗
mysql版本
select version()
select @@version
2、儲存過程是屬於資料庫
show databases;
create database db1;
use db1;
3、宣告結束符
delimiter //
4、建立儲存過程
create procedure p1() select 「」; //
5、呼叫儲存過程
call p1()//
6、恢復結束符
delimiter ;
5)儲存過程的呼叫:
語法格式:call 儲存過程名
(…);
6)、引數的應用:
in 輸入形參引數的使用
set @x=3;或者select @x;
呼叫必須有對應的實參(型別、數量)將資訊帶入到儲存過程
create procedure p10(in para1 int) set @x=para1;
或create procedure p10(para1 int) set @x=para1;
call p10(18);
select @x;
使用者定義變數:宣告開始set @x=3;
到斷開連線結束不能和其他使用者共享
作用域: 儲存過程的區域性變數:臨時結果
作用範圍:從宣告位置開始,到end結束
語法格式 分步declare(
宣告) var_name type;
var_name初值是
null
set var_name=值;
declare var_name type default 值;
1) declare v1,v2 int;
set v1=5,v2=8;
out 輸出形參的使用
\:用乙個變數(實參位置)儲存儲存過程中返回的結果
例:create procedure p14(out para1 int)
begin
set para1=10;
end//
call p14(@x);
select @x;
select @y:=@x+1;
例如:函式 function fun1()
{。。。。
return 32;
$name=fun1();
$a=$name+1;
3、巢狀
create
procedure
p15()
begin
declare v1 char(10) default』 『outer;
begin
declare v1 char(10) default 『inner』;
select v1;
end;
select v1;
end//
三、流程控制結構
第一組:
條件分支結構
if語句
case 語句
語法:
if 條件
1 then
語句集合
【elseif
條件2 then
語句集合】
【else
語句集合】
注意:形參中的變數如果和儲存過程中的區域性變數同名,會「覆蓋」;
形參變數在儲存過程中無大小寫的要求;
例子:建立儲存過程,如果引數<60
分,給t1
表插入資料
0;否則給t1
表插入2
學分;
create procedure t1_add(para1 int)
begin
if para1>=60 then
insert into t1 values(2);
else
insert into t1 values(0);
end if;
end//
call t1_add(70);//
select * from t1;//
儲存過程 2
1,呼叫沒有引數的儲存過程 set conn server.createobject adodb.connection set cmd server.createobject adodb.command strconn dsn pubs uid sa pwd conn.open strconn se...
儲存過程2
pl sql developer 1,入門 簡單例子 描述 儲存過程如何將一條新紀錄插入到資料庫表 該例可體現在填報錶用儲存過程方式完成更新 creat table test pro id varchar2null,name varchar2 null 儲存過程任務 將id為 zhangsan na...
儲存過程2
1.建立三張表 dept10,dept20,dept30,表結構和 dept 一致 不拷貝資料 create table dept10 as select from dept where 1 2 create table dept20 as select from dept where 1 2 cr...