oracle如何从存储过程中获取数据
Posted
技术标签:
【中文标题】oracle如何从存储过程中获取数据【英文标题】:how to fetch data from stored procedure in oracle 【发布时间】:2016-10-21 08:48:46 【问题描述】:我需要从存储过程中获取数据
sql developer中的语法
select abc_web_demo.wwv_json_data.dashboards('abc','7','tt',1211) from dual
返回json字符串
"data":["logs":7,"to_abc":88,"to_cl":12,"to_me":0]
代码
$tns = "
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =ABC)(PORT = 1521))
)
(CONNECT_DATA = (SID = AAA))
)
";
try
$conn = new PDO("oci:dbname=".$tns, '**', '**');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'Connected to database';
catch(PDOException $e)
echo 'ERROR: ' . $e->getMessage();
$sql = "CALL abc_web_demo.wwv_json_data.dashboards('ABC','79','Y',121221) ";
$stmt = $conn->prepare($sql);
$te=$stmt->execute();
//$stmt = $connection->query("SELECT @NEW_ID");
//$id = $stmt->fetchColumn();
print_r($te);
问题
我有 google 并发现我需要在查询中传递字符串 比如 $stmt = $connection->query("SELECT @NEW_ID");
在我的情况下,我需要在过程中传递 4 个参数。
我是存储过程的新手,我需要帮助如何在过程中传递 4 个参数。
如何使用 fetch 语句访问 json 响应。
我需要获取数据的 json 响应。
非常感谢任何帮助
我试过的解决办法
$output = $conn->query("select 'abc', '7' ")->fetch(PDO::FETCH_ASSOC);
var_dump($output);
错误
SQLSTATE[HY000]: General error: 923 OCIStmtExecute: ORA-00923: FROM keyword not found where expected
当我尝试测试查询时,它可以工作
$stmt = $conn->prepare("select * from customers");
$st=$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($result);
【问题讨论】:
你必须修正那个“select 'abc', '7'”,它在语法上不正确, 您已经在上面编写了正确的命令:“select abc_web_demo.wwv_json_data.dashboards('abc','7','tt',1211) from dual" 假设您只想获取一行,而不是循环 $stmt = $conn->prepare("ALL abc_web_demo.wwv_json_data.dashboards('ABC','79','Y',121221)"); $st=$stmt->执行(); $result = $stmt->fetch(PDO::FETCH_ASSOC); print_r($result); 为什么这个程序会抛出错误 【参考方案1】:按如下方式编写您的查询。 FROM
子句在 Oracle SQL 方言中是强制性的。
select 'abc', '7' from dual
【讨论】:
以上是关于oracle如何从存储过程中获取数据的主要内容,如果未能解决你的问题,请参考以下文章