本文目錄一覽:
mysql 存儲過程怎麼調用?
php調用mysql存儲過程和函數的方法
存儲過程和函數是MySql5.0剛剛引入的。關於這方面的操作在PHP裏面沒有直接的支持。但是由於Mysql PHP API的設計,使得我們可以在以前的PHP版本中的mysql php api中支持存儲過程和函數的調用。
在php中調用存儲過程和函數。
1。調用存儲過程的方法。
a。如果存儲過程有 IN/INOUT參數,聲明一個變量,輸入參數給存儲過程,該變量是一對,
一個php變量(也可以不必,只是沒有php變量時,沒有辦法進行動態輸入),一個Mysql
變量。
b。如果存儲過程有OUT變量,聲明一個Mysql變量。
mysql變量的聲明比較特殊,必須讓mysql服務器知道此變量的存在,其實也就是執行一條mysql語句。
入set @mysqlvar=$phpvar ;
c。使用mysql_query()/mysql_db_query()執行mysql 變量聲明語句。
mysql_query(“set @mysqlvar=$pbpvar”);
這樣,在mysql服務器裏面就有一個變量,@mysqlar。如果是IN參數,那麼其值可以由phpar傳入。
d。 如果是存儲過程。
1。執行 call procedure()語句。
也就是mysql_query(“call proceduer([var1]…)”);
2. 如果有返回值,執行select @ar,返回執行結果。
mysql_query(“select @var)”
接下來的操作就和php執行一般的mysql語句一樣了。可以通過mydql_fetch_row()等函數獲得結果。
如果時函數。 直接執行 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];
navicat 怎樣調試mysql存儲過程
navicat 怎樣調試mysql存儲過程
使用Navicat for MySQL工具創建存儲過程步驟:
1. 新建函數(選擇函數標籤 – 點擊新建函數):
2、輸入函數的參數個數、參數名、參數類型等:
3、編寫存儲過程:
4、保存(請輸入合法名稱):
5、運行存儲過程(在結果1,2,3…中可以查詢輸出信息):
mysql怎麼調試存儲過程
mysql調試存儲過程具體方法:
在你的存儲過程中加入如下語句:
SELECT
變量1,變量2;
然後用mysql自帶的cmd程序進入mysql
下。
call
你的存儲過程名(輸入參數1,@輸出參數);(注:這裡幫助下新同學,如果你的存儲過程有輸出變量,那麼在這裡只需要加
@
然後跟任意變量名即可);
即可發現你的變量值被打印到了cmd下
mysql 存儲過程總結(一)
1、存儲過程定義:
存儲過程是事先經過編譯並存儲在數據庫中的一段 SQL 語句的集合,調用存儲過程可以簡化應用開發 人員的很多工作,減少數據在數據庫和應用服務器之間的傳輸,對於提高數據處理的效率是有好處的。 存儲過程思想上很簡單,就是數據庫 SQL 語言層面的代碼封裝與重用。
2、特點:
封裝,復用 : 可以把某一業務SQL封裝在存儲過程中,需要用到 的時候直接調用即可。
可以接收參數,也可以返回數據 :再存儲過程中,可以傳遞參數,也可以接收返回 值。
減少網絡交互,效率提升 : 如果涉及到多條SQL,每執行一次都是一次網絡傳 輸。 而如果封裝在存儲過程中,我們只需要網絡交互一次可能就可以了。
3、基本語法
(1)創建:
(2)調用:
(3)查看:
(4)刪除
注意: 在命令行中,執行創建存儲過程的SQL時,需要通過關鍵字 delimiter 指定SQL語句的 結束符。
幫忙調試一段MYSQL的存儲過程!
=====================================
/*腳本2開始*/
DECLARE RANDSTR varchar(2) DEFAULT CAST(round(rand()*53) AS char(2));
DECLARE LocationId INT DEFAULT (SELECT `ID` FROM `shuo_Citys` WHERE `PID`0 ORDER BY rand() Limit 1);
DECLARE Location VARCHAR(50) DEFAULT (SELECT `Name` FROM `shuo_Citys` WHERE `ID`=LocationId);
/*腳本2結束*/
=====================================
這段移到
declare Uid int;
的下一行
原因:declare 必須都在最前面
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/287390.html