php - 如何获取 id Oracle PHP RETURNING INTO
问题描述
甲骨文 12c + PHP
如何从此查询中获取 id:
$execute = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK";
我对 oci_bind_by_name 和 RETURNING INTO 的尝试
$c = oci_connect($username, $password, $database);
if (!$c) {
$m = oci_error();
trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}
$executeforId = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK RETURNING dodatekid INTO :dodatekId";
$exForId = oci_parse($c,$executeforId);
oci_bind_by_name($stid, ':dodatekId', $dodatekIdForTxt);
echo $dodatekIdForTxt;
我得到了警告:oci_bind_by_name():ORA-01036:非法变量名称/编号
解决方案
来自文档:
使用OUT绑定时必须指定maxlength ,以便 PHP 分配足够的内存来保存返回值。
所以尝试在绑定中添加 maxlength 和 type 参数:
`oci_bind_by_name($exForId, ':dodatekId', $dodatekIdForTxt, -1, OCI_B_INT);`
推荐阅读
- c# - 如何使用 C# 从另一台服务器远程管理 IIS?
- node.js - 如何更新订单状态?
- python - 仅在 kivy 首次启动时显示设置屏幕
- javascript - Expo react-native 不使用 fontFamily
- haskell - Haskell GHCJS with Diagrams 给出错误:没有为此平台提供 C 编译器
- kubernetes - 我可以在“排除模式”中创建 Kubernetes 角色吗?
- javascript - 有什么方法可以在不悬停的情况下默认显示所有数据点?
- java - 为什么我无法在 @Async 方法中获得结果?(抛出“IllegalStateException:EntityManagerFactory 已关闭”)
- swift - 使用 Embassy 成功进行 UI 测试后随机崩溃
- c# - Blazor 组件事件回调