调用从PHP执行插入/更新的Oracle函数?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了调用从PHP执行插入/更新的Oracle函数?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1118字,纯文字阅读大概需要2分钟。
内容图文
![调用从PHP执行插入/更新的Oracle函数?](/upload/InfoBanner/zyjiaocheng/894/55ca4439ebbd40e7b86ab4b47f2986de.jpg)
我们有一个函数如果我们通过使用SELECT调用它我们得到错误代码ORA-14551“无法在查询中执行DML操作”
select pkg_tools.replace_site(1121,3343) from dual;
如何运行此功能并获得结果
当我们以这种方式在SQL开发人员中运行它时:
declare
v_return VRACHAR2(200);
begin
v_return := pkg_tools.replace_site(1121,3343);
end;
工作没有错误
我们需要在PHP中调用此函数
注意:我不能在这里粘贴这个函数,因为它很长,但它会分配操作,包括插入和更新!
解决方法:
无论调用语言如何,都无法在SELECT语句中调用执行DML的函数.
如果要执行DML并返回值,则使用OUT参数而不是使用函数创建存储过程会更有意义.所以它会更有意义
CREATE OR REPLACE PROCEDURE proc_name( p_1 IN NUMBER,
p_2 IN NUMBER,
p_ret OUT VARCHAR2 )
AS
BEGIN
p_ret := pkg_tools.replace.site( p_1, p_2 );
END;
然后是call that stored procedure from PHP
$sql = 'BEGIN proc_return( :p_1, :p_2, :p_ret ); END;';
如果你不想这样做,我猜你也可以这样做(改编自Underground PHP and Oracle Manual第164页的一个脚本)
<?php
$c = oci_connect('hr', 'hrpwd', 'localhost/XE');
$s = oci_parse($c, "begin :ret :=pkg_tools.replace_site(1121,3343); end;");
oci_bind_by_name($s, ':ret', $r, 200);
oci_execute($s);
echo "Result is: ".$r;
?>
内容总结
以上是互联网集市为您收集整理的调用从PHP执行插入/更新的Oracle函数?全部内容,希望文章能够帮你解决调用从PHP执行插入/更新的Oracle函数?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。