MySql預存程序 建立刪除與執行個體

來源:互聯網
上載者:User

mysql教程預存程序是帶參數的預存程序(動態執行sql語句),該mysql預存程序是根據使用者輸入的條件和排序方式查詢使用者的資訊,排序條件可以沒有調用方式:

mysql 5.0
新特性教程是為需要瞭解5.0版本新特性的mysql老使用者而寫的。簡單的來說是介紹了“預存程序、觸發器、視圖、資訊架構視圖”,

 

  call getusersdynamic('age<=30','');

 

/********動態查詢使用者的資訊********/    create procedure getusersdynamic(wherecondition varchar(500),orderbyexpress varchar(100))    begin    declare stmt varchar(2000);    if length(orderbyexpress)>0 then    begin         set @sqlstr=concat('select id,name,password,age,getdate(adddate) as adddate from users where ',wherecondition,' order by ',orderbyexpress);    end;    else    begin         set @sqlstr=concat('select id,name,password,age,getdate(adddate) as adddate from users where ',wherecondition);    end;    end if;    prepare stmt from @sqlstr;    execute stmt;    end;     getdate()是一個自訂的函數,作用是返回日期的短格式

 

create definer=`root`@`localhost` function `getdate`($date datetime) returns varchar(50) charset latin1    return date_format($date,'%y-%m-%d');    動態插入資料的mysql預存程序,(注意四個單引號表示一個一引號):

 

create definer=`root`@`localhost` procedure `insertuser`(in name2 varchar(50),in password2 varchar(32),in age2 int,in adddate2 datetime)    begin    declare stmt varchar(2000);    set @sqlstr=concat('insert into users(name,password,age,adddate) values(');    set @sqlstr=concat(@sqlstr,'''',name2,'''',',','''',password2,'''',',',age2,',','''',adddate2,'''',')');    prepare stmt from @sqlstr;    execute stmt;    end; 

 

在這裡舉個例子:mysql> drop function f;query ok, 0 rows affected (0.00 sec)

如果執行個體比較大,則需要在某些行和段落間加註釋,同時我會用將“<--”符號放在頁面的右邊以表示強調。

 

例如:

mysql> create procedure p ()

-> begin

-> /* this procedure does nothing */ <--

-> end;//query ok, 0 rows affected (0.00 sec)

 

有時候我會將例子中的"mysql>"和"->"這些系統顯示去掉,你可以直接將代碼複製到mysql用戶端程式中(如果你現在所讀的
不是電子版的,可以在mysql.com網站下載相關指令碼)所以的例子都已經在suse 9.2 linux、mysql 5.0.3公用版上測試通過。

在您閱讀本書的時候,mysql已經有更高的版本,同時能支援更多os了,包括windows,sparc,hp-ux。因此這裡的例子將能正常的運行在您的電腦上。但如果運行仍然出現故障,可以諮詢你認識的資深mysql使用者,以得到長久的支援和協助。

 

a definition and an example 定義及執行個體

 

定義及執行個體預存程序是一種儲存在書庫中的程式(就像正規語言裡的子程式一樣),準確的來說,mysql支援的“routines(常式)”有兩種:
一是我們說的預存程序,二是在其他sql語句中可以傳回值的函數(使用起來和mysql預裝載的函數一樣,如pi())。我在本書裡面會更經常使用儲存過
程,因為這是我們過去的習慣,相信大家也會接受。

 

一個預存程序包括名字,參數列表,以及可以包括很多sql語句的sql語句集。

在這裡對局部變數,異常處理,迴圈控制和if條件句有新的文法定義。

下面是一個包括預存程序的執行個體聲明:(譯註:為了方便閱讀,此後的程式不添任何中文注釋)

 

create procedure procedure1 /* name預存程序名*/

 

(in parameter1 integer) /* parameters參數*/

 

begin /* start of block語句塊頭*/

 

declare variable1 char(10); /* variables變數聲明*/

 

if parameter1 = 17 then /* start of if if條件開始*/

 

set variable1 = 'birds'; /* assignment賦值*/

 

else

 

set variable1 = 'beasts'; /* assignment賦值*/

 

end if; /* end of if if結束*/

 

insert into table1 values (variable1);/* statement sql語句*/

 

end /* end of block語句塊結束*/

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.