mysql調試存儲過程具體方法:
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、雅安服務器托管、營銷軟件、網站建設、吉州網站維護、網站推廣。
在你的存儲過程中加入如下語句:
SELECT 變量1,變量2;
然后用mysql自帶的cmd程序進入mysql 下。
call 你的存儲過程名(輸入?yún)?shù)1,@輸出參數(shù));(注:這里幫助下新同學,如果你的存儲過程有輸出變量,那么在這里只需要加 @ 然后跟任意變量名即可);
即可發(fā)現(xiàn)你的變量值被打印到了cmd下
php調用mysql存儲過程和函數(shù)的方法
存儲過程和函數(shù)是MySql5.0剛剛引入的。關于這方面的操作在PHP里面沒有直接的支持。但是由于Mysql PHP API的設計,使得我們可以在以前的PHP版本中的mysql php api中支持存儲過程和函數(shù)的調用。
在php中調用存儲過程和函數(shù)。
1。調用存儲過程的方法。
a。如果存儲過程有 IN/INOUT參數(shù),聲明一個變量,輸入?yún)?shù)給存儲過程,該變量是一對,
一個php變量(也可以不必,只是沒有php變量時,沒有辦法進行動態(tài)輸入),一個Mysql
變量。
b。如果存儲過程有OUT變量,聲明一個Mysql變量。
mysql變量的聲明比較特殊,必須讓mysql服務器知道此變量的存在,其實也就是執(zhí)行一條mysql語句。
入set @mysqlvar=$phpvar ;
c。使用mysql_query()/mysql_db_query()執(zhí)行mysql 變量聲明語句。
mysql_query("set @mysqlvar=$pbpvar");
這樣,在mysql服務器里面就有一個變量,@mysqlar。如果是IN參數(shù),那么其值可以由phpar傳入。
d。 如果是存儲過程。
1。執(zhí)行 call procedure()語句。
也就是mysql_query("call proceduer([var1]...)");
2. 如果有返回值,執(zhí)行select @ar,返回執(zhí)行結果。
mysql_query("select @var)"
接下來的操作就和php執(zhí)行一般的mysql語句一樣了。可以通過mydql_fetch_row()等函數(shù)獲得結果。
如果時函數(shù)。 直接執(zhí)行 select function() 就可以了。
$host="localhost";
$user="root";
$password="11212";
$db="samp_db";
$dblink=mysql_connect($host,$user,$password)
or die("can't connect to mysql");
mysql_select_db($db,$dblink)
or die("can't select samp_db");
$res=mysql_query("set @a=$password",$dblink);
$res=mysql_query("call aa(@a)",$dblink);
$res=mysql_query("select @a",$dblink);
$row=mysql_fetch_row($res);
echo $row[0];
方法一 進入命令行
mysql –u用戶名 –p密碼 –D數(shù)據(jù)庫【sql腳本文件路徑全名】,示例:
mysql –uroot –p123456 -Dtest /home/zj/create_table.sql
注意:
如果在sql腳本文件中使用了use 數(shù)據(jù)庫,則-D數(shù)據(jù)庫選項可以忽略
方法二 進入mysql的控制臺后,使用source命令執(zhí)行
Mysqlsource 【sql腳本文件的路徑全名】 或 Mysql\. 【sql腳本文件的路徑全名】,示例:
source /home/zj/create_table.sql
.??????關于MySQL的存儲過程
存儲過程是數(shù)據(jù)庫存儲的一個重要的功能,但是MySQL在5.0以前并不支持存儲過程,這使得MySQL在應用上大打折扣。好在MySQL 5.0終于開始已經支持存儲過程,這樣即可以大大提高數(shù)據(jù)庫的處理速度,同時也可以提高數(shù)據(jù)庫編程的靈活性。
MySQL存儲過程的創(chuàng)建
(1).?格式
MySQL存儲過程創(chuàng)建的格式:CREATE PROCEDURE?過程名?([過程參數(shù)[,...]])
[特性?...]?過程體
這里先舉個例子:
mysql?DELIMITER?//
mysql?CREATE?PROCEDURE?proc1(OUT?s?int)
-?BEGIN
-?SELECT?COUNT(*)?INTO?s?FROM?user;
-?END
-?//
mysql?DELIMITER?;
注:
(1)這里需要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那么編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執(zhí)行這些代碼,用完了之后要把分隔符還原。
(2)存儲過程根據(jù)需要可能會有輸入、輸出、輸入輸出參數(shù),這里有一個輸出參數(shù)s,類型是int型,如果有多個參數(shù)用","分割開。
(3)過程體的開始與結束使用BEGIN與END進行標識。
創(chuàng)建存儲過程
CREATE PROCEDURE 存儲過程名()
一個例子說明:一個返回產品平均價格的存儲過程如下代碼:
CREATE PROCEDURE productpricing()
BEGIN
SELECT Avg(prod_price) AS priceaverage
FROM products;
END;
//創(chuàng)建存儲過程名為productpricing,如果存儲過程需要接受參數(shù),可以在()中列舉出來。即使沒有參數(shù)后面仍然要跟()。BEGIN和END語句用來限定存儲過程體,過程體本身是個簡單的SELECT語句
給你個例子
drop procedure if exists call proc_temp;
delimiter $ //存儲過程從$ 開始
create procedure proc_temp(
IN startDate VARCHAR(20),//設置傳入的變量,沒有可以不要傳
IN endDate VARCHAR(20))
BEGIN
DECLARE dflag INT(11); //這里可以定義你需要的僅在存儲過程里使用的變量
SET dflag = 0;//初始化
select * from table where time between startDate and endDate ;//你的sql語句,可以一句可以多句
END $//存儲過程從$ 結束
delimiter ;
當上面的選中運行后沒問題,可以選中下面的call xx 運行,上面的代碼沒有改動的話只需要運行一次
標題名稱:mysql怎么用存儲過程,存儲過程 MySQL
網站網址:http://m.kartarina.com/article0/heisio.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供做網站、服務器托管、微信公眾號、網站導航、網站排名、自適應網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)