请问如何在ORACLE中实现SELECT后调用变量?

emir2018 2018-04-18 04:38:53
select 
subjcode 科目编号,
lsubjname 科目名称,
201701 开始期间,
201712 结束期间
from audadmin.audit_subjcode

上面这个语句运行正确




declare 
sdata nvarchar2(20) :='201701';
edata nvarchar2(20) :='201712';

begin
select
subjcode 科目编号,
lsubjname 科目名称,
sdata 开始期间,
edata 结束期间
from audadmin.audit_subjcode
end;

改成这样就出错了,

网上搜索没找到答案,请问高手该怎么写,才能实现调用变量
...全文
1548 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue小脚丫 2020-03-02
  • 打赏
  • 举报
回复
declare 
sdata nvarchar2(20) :='201701';
edata nvarchar2(20) :='201712';
 
begin
select 
subjcode 科目编号,               
lsubjname  科目名称,               
(select sdata from dual) as sdata 开始期间,               
(select edata from dual) as edata 结束期间          
from audadmin.audit_subjcode
end;
如上,用select sdata from dual 将变量查出来
a29374963 2018-04-23
  • 打赏
  • 举报
回复
用动态语句拼接。
emir2018 2018-04-21
  • 打赏
  • 举报
回复
感觉复杂化了,这里只是想用变量的方式写个语句,然后在plsql下方显示查询结果。 我之前的语句该怎么改,能给个语句吗
sych888 2018-04-20
  • 打赏
  • 举报
回复
引用 6 楼 emir2018 的回复:
[quote=引用 5 楼 sych888的回复:]ORACLE的PL SQL输出结果集不如SQL SERVER那么方便 您可以把您的需求再完整的描述一下 如过仅仅是把当前的结果集打印出来,可以用FOR 和PUTLINE方法打印
我想用调用变量的方式来写查询语句。 想得到和没使用变量时,相同的输出结果。 就是第二张图的结果。 目前用了几种方法还是各种报错。[/quote] 可以考虑用游标接收结果集
emir2018 2018-04-20
  • 打赏
  • 举报
回复
引用 5 楼 sych888的回复:
ORACLE的PL SQL输出结果集不如SQL SERVER那么方便 您可以把您的需求再完整的描述一下 如过仅仅是把当前的结果集打印出来,可以用FOR 和PUTLINE方法打印
我想用调用变量的方式来写查询语句。 想得到和没使用变量时,相同的输出结果。 就是第二张图的结果。 目前用了几种方法还是各种报错。
sych888 2018-04-18
  • 打赏
  • 举报
回复
ORACLE的PL SQL输出结果集不如SQL SERVER那么方便 您可以把您的需求再完整的描述一下 如过仅仅是把当前的结果集打印出来,可以用FOR 和PUTLINE方法打印
  • 打赏
  • 举报
回复
用 dbms_output.put_putline 拼接打印出来可以
卖水果的net 2018-04-18
  • 打赏
  • 举报
回复
放在一个存储过程里,把这些值做为输入参数。 再返回一个游标,每次调用,就查看这个游标的内容就可以了。
emir2018 2018-04-18
  • 打赏
  • 举报
回复
那请问有哪些变通的方法可以实现呢? 可以给出例子语句吗? 一个语句里面重复很多遍太容易出错了,也不利于修改。 SQLSERVER里好像可以直接把@加变量,放到SELECT后面。
卖水果的net 2018-04-18
  • 打赏
  • 举报
回复
plsql 中不支持这样的查询; 只能写在过程中,返回这样的结果; sqlplus 倒是可以,只是数据量大了,看着不方便。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧