当前位置:首页 » 服务存储 » 存储过程查询两次可以吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

存储过程查询两次可以吗

发布时间: 2023-07-01 08:57:36

① 一个存储过程可以调用两个存储过程吗

直接调用就可以了。举个例子把 B 存储过程调用A 存储过程。
PROCEDURE A (p_1 in number,p_2 out number)

is
v_1 number;
begin
V_1:=p_1;
p_2:=v_1;
end A;

(1)如果A 与B同在一个package里面的话。那么 B里面直接可以调用A
PS:如果A,B在同一个Package 中无法调用的话,那么很可能是A,B在Spec里没有声明。一个package包含Spec 和Body,两层。不能调用很可能没有声明。声明后应该ok!

PROCEDURE B(p_1 in number)
is
v_result number;

begin

v_result =A(p_1);

end B;
其中v_result就是调用A的结果,A的返回值。

(2)如果A与B不在同一个package的话
那么B在调用A 的时候,需要加上pkg的名字
比如:A 存储过程在pkg :xxom_test_pkg 中

PROCEDURE B(p_1 in number)
is
v_result number;
begin
v_result = xxom_test_pkg .A(p_1);

end B;

----------------------------------------------------------
以上简单介绍了存储过程的调用。
希望对你有帮助

② php如何获取mysql存储过程的多个结果集存储过程如下如何获取两次Select的结果

假设存储过程的名字是p_test()

createPROCEDURE`p_test`()
BEGIN
select3as'end';
selectNOW()as'time';
END


php代码

<?php
/**
*mysqliconnect
*/
$mysqli_link=mysqli_connect($db_host,$db_user,$db_password,$db_database,$db_port);
if($mysqli_link){
echo'dbconnectok'.PHP_EOL;
}else{
die('dbconnecterror');
}

/**
*mysqliquery
*/
$sql_select=<<<EOF
callp_test();
EOF;

//Executemultiquery
if(mysqli_multi_query($mysqli_link,$sql_select)){
do{
//Storefirstresultset
if($result=mysqli_store_result($mysqli_link)){
while($row=mysqli_fetch_row($result)){
var_mp($row);
echoPHP_EOL;
}
mysqli_free_result($mysqli_link);
}
echo'=========='.PHP_EOL;
}while(mysqli_next_result($mysqli_link));
}