Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javabean中存储Oracle Rowid_Java_Sql_Oracle_Procedure_Rowid - Fatal编程技术网

如何在javabean中存储Oracle Rowid

如何在javabean中存储Oracle Rowid,java,sql,oracle,procedure,rowid,Java,Sql,Oracle,Procedure,Rowid,我正在调用一个存储过程,该过程返回行列表的rowid。我在Java中存储实际的rowid值时遇到了问题,因此以后可以将该rowid用于后续更新语句 例如: Select name, age, ROWID, from myTable where rownum<20; 该值不完全匹配。相反,我得到的值是:oracle.sql。ROWID@123a123b 有人知道如何在Java中正确地存储rowid值,以便以后在后续语句中使用它吗 多谢各位 编辑:APC回答了下面的问题,我已经做了标记。多谢

我正在调用一个存储过程,该过程返回行列表的rowid。我在Java中存储实际的rowid值时遇到了问题,因此以后可以将该rowid用于后续更新语句

例如:

Select name, age, ROWID, from myTable where rownum<20;
该值不完全匹配。相反,我得到的值是:oracle.sql。ROWID@123a123b

有人知道如何在Java中正确地存储rowid值,以便以后在后续语句中使用它吗

多谢各位

编辑:APC回答了下面的问题,我已经做了标记。多谢各位

问题在于查询本身。我需要改变:

select rowid
改为:

select ROWIDTOCHAR(ROWID)
java随后能够将该值存储在字符串中。尽管如此,我不需要按照要求进行第二次修改,因为在我仍然使用以下工具时,它目前可以工作:

update name='bob' where rowid=:rowid;

ROWID可能看起来像字符串,但其数据类型不是字符串。有一个
toString()
方法,所以您应该在Java中使用它

但看起来您正在使用JSON。因此,这可能不是适合您的解决方案。另一种方法是将ROWID强制转换为SQL语句中的字符串:

Select t.name, t.age, ROWIDTOCHAR(t.rowid) as Row_id
from myTable t
where rownum<20;
如果随后需要使用ROWID标识行,则需要将其回滚:

update myTable t
set t.age = 42
where t.rowid = CHARTOROWID(:row_id)


警告:我没有测试所有这些的设置,所以可能有语法错误。而且,很明显,我不知道为什么首先要存储rowid,所以整个方法可能无法解决您的问题

>您可能想考虑是否存储RoWID是一个好主意,正如这里所解释的:使用OJDB6JAR <代码> toStrug()/Curry>返回默认的<代码>对象.toStrug()/<代码>输出。使用
ROWID
.stringValue()
会给出与Oracle函数
ROWIDTOCHAR
setRowID(workTableResponseJson.getString("Row_id"));
update myTable t
set t.age = 42
where t.rowid = CHARTOROWID(:row_id)