在我的实际工作中,我经常需要阅读一些表格并因此采取行动,有时手动更新这些数据。 所以我构建了一个PL / SQL块来创建我的SELECT语句(是的,使用“FOR UPDATE”子句,只是注释)。 例如,这只是我构建的查询中的一个:
phtr_QUERY := 'SELECT *
FROM ' || tabriabi_impianto || '.pdfhtr t
WHERE t.k_abi=''' || tabriabi_abi || ''' ';
if length(myNag) > 0 then
phtr_QUERY := phtr_QUERY || 'and t.ndg like ''%' || myNag || '%'' ';
end if;
if length(myPrat) > 0 then
phtr_QUERY := phtr_QUERY || ' and t.pratica like ''%' || myPrat || '%'' ';
end if;
phtr_QUERY := phtr_QUERY || crlf || ' order by 2 ';
phtr_QUERY := phtr_QUERY || crlf || '--for update';
phtr_QUERY := phtr_QUERY || crlf || ';';
然后我从Output窗口(通过dbms_output.put_line获取)复制这些语句并将其粘贴到新的SQL窗口并执行它,在多个选项卡中获取结果。
我想知道是否有更好的方法,我可以使用一些命令直接获得(可编辑的)结果而无需剪切和粘贴......
TIA。
F。
答案 0 :(得分:1)
一个非常恐怖/ hackish的方法来做你想要的是将结果查询存储在一个临时表中,之后你可以做类似这里描述的过程:
How can I use an SQL statement stored in a table as part of another statement?
请注意:这可能是一个坏主意。
答案 1 :(得分:1)
select a.rowid, a.* from table_name a;
将在许多工具中以编辑模式打开。
答案 2 :(得分:0)
我想知道是否有更好的方法,我可以使用一些命令直接获得(可编辑的)结果,而无需剪切和粘贴
您应该了解编辑功能是您正在使用的数据库工具的功能。当您在结果网格中插入,更新或删除某些记录时,此工具会将您的操作转换为相应的SQL语句并在运行中执行。
作为一种解决方法,我建议您创建一个存储过程,它将一些参数作为“表名”,“where conditions”,然后创建可更新的数据库视图。执行完程序并准备视图后,您可以运行“select ... for update”并使用返回的数据进行处理。