dblink調用存儲過程
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 procere()語句。
也就是mysql_query("call proceer([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];
2. oracel 通過dblink 調用mssql 存儲過程
ORACLE的DB_LINK不能調用MSSQL的存儲過程,但可以調用遠程ORACLE的存儲過程。
連接到mssql的存儲過程
方法我知道的有兩種
1、把MSSQL的存儲移植到ORACLE裡面,使用本地調用。
2、使用腳本命令調用,比如hostd:xxxxxxxsqlcmd.....
3. 通過oracle dblink,怎麼執行遠程資料庫的存儲過程。或者說可以執行嗎怎麼弄
能不能執行存儲過程取決於你的dblink那個資料庫的用戶的許可權,比如你這邊的資料庫用戶A,是另外一個資料庫的dblink用戶,那麼另外那個資料庫的用戶是利用A用戶進行操作的。一般都是select,執行存儲過程什麼的,是看的A的許可權。
不過我要梯形下,就選你insert,提示成功,可是實際並咩有插入,因為insert後,那個dblink的session就已經關閉了,commit並不能確認。所以我們一般是通過遠程式控制制存儲過程解決的這個問題。