提示用户在 oracle 中输入
Posted
技术标签:
【中文标题】提示用户在 oracle 中输入【英文标题】:Prompt a user for input in oracle 【发布时间】:2015-08-12 04:47:45 【问题描述】:如何使用 SQLTools v1.6 ?我尝试了以下 PL/SQL 块:
DECLARE
type tes_tab is table of test_table%rowtype;
test_tab tes_tab;
BEGIN
execute immediate 'SELECT * FROM test_table WHERE memid=' || &MemID
bulk collect into test_tab;
for i in 1..test_tab.count
loop
dbms_output.put_line(test_tab(i).memid || ' ' || test_tab(i).clmtype);
end loop;
END;
它在编译时提示用户输入。但是,该值不能在 select 语句中使用。有没有其他方法可以实现我的目标。
该表包含 852269 条记录,其中单个 memID 的多行(我在这里提供了几行):
MEMID CLMTYPE PAIDAMT SERVICEDATE PAIDDATE
----------- --------- --------- --------------------- ---------------------
220000096 RX 77.22 06.05.2011 00:00:00 27.05.2011 00:00:00
220000096 RX 77.22 04.02.2011 00:00:00 27.02.2011 00:00:00
220000096 RX 93.36 01.01.2011 00:00:00 27.01.2011 00:00:00
220000096 RX 15.07 09.08.2012 00:00:00 07.09.2012 00:00:00
220000096 RX 105.52 06.01.2012 00:00:00 04.02.2012 00:00:00
220000096 RX 93.36 02.03.2011 00:00:00 27.03.2011 00:00:00
220000096 RX 105.52 09.11.2011 00:00:00 09.12.2011 00:00:00
220000096 RX 105.52 10.03.2012 00:00:00 13.04.2012 00:00:00
220000096 RX 50.52 06.04.2011 00:00:00 27.04.2011 00:00:00
【问题讨论】:
【参考方案1】:对代码的小修改
DECLARE
vblMemID test_table%rowtype;
BEGIN
EXECUTE IMMEDIATE'SELECT * FROM test_table WHERE memid='||&MemID into vblMemID ;
dbms_output.put_line(vblMemID.column1_name||' '||vblMemID.column2_name);
END;
注意: Column1_name 和 column2_name 表示您的表列名。 如果您的选择查询仅返回一行,则上述代码将起作用。如果它返回多行,我们必须使用另一种方法。如果您需要,我会发布该代码。
编辑 如果选择查询将返回多行,则以下代码将起作用。对于不止一行,我们必须在 oracle 中使用集合或 sysref 游标。
DECLARE
type tes_tab is table of test_table%rowtype;
test_tab tes_tab;
BEGIN
execute immediate 'SELECT * FROM test_table WHERE memid='||&MemID bulk collect into test_tab;
for i in 1..test_tab.count
loop
dbms_output.put_line(test_tab(i).column1_name||' '||test_tab(i).column2_name);
end loop;
END;
【讨论】:
该表有五列。而且我需要像你说的那样为单个 MemID 显示多行。 @hsuyaa 是否需要动态执行选择查询? 是的,它必须是动态的。 现在您可以显示五列。并根据您的要求编辑 dbms_output 语句。 没有按预期工作。它说,'column2_name(我的表中的 clmtype) 没有声明'。以上是关于提示用户在 oracle 中输入的主要内容,如果未能解决你的问题,请参考以下文章
oracle数据库导入问题 输入用户和密码报错1017 提示无效的USER/PASSWORD 但是这个用户名密码能连上数据库