热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle如何调用带参数的存储过程

我用的navicatfororacle连接的数据库网上找了一个例子createorreplaceprocedureoutput_dateisbegindbms_o
我用的navicat for oracle连接的数据库

网上找了一个例子

create or replace procedure output_date is
begin
dbms_output.put_line(sysdate);
end output_date;

call  output_date(); 不带参数的这样执行是对的

但是如果带参数,例如

create or replace procedure get_username(v_id in number,v_username out varchar2)
as
begin
  select username into v_username from tab_user where id = v_id; --变量赋值
exception
when no_data_found then
raise_application_error(-20001,'ID不存在!');
end get_username;


call get_username(1,'a');

出错提示

[SQL] call GET_USERNAME(1,'a')
[Err] ORA-06577: output parameter not a bind variable

应该如何调用呢?
过程是没有问题的,不执行语句而在过程上右键执行输入参数可以直接返回结果。

6 个解决方案

#1


v_username out varchar2

你先改成

v_username in varchar2

应该就可以执行了

差别就在in 和 out~~   百度下 就知道区别啦~  out是要带回来的

#2


引用楼主  的回复:
我用的navicat for oracle连接的数据库

网上找了一个例子

create or replace procedure output_date is
begin
dbms_output.put_line(sysdate);
end output_date;

call  output_date(); 不带参数的这样执行是对的

但是如果带参数,例如

cre……


out的参数是返回的结果,应该不能改成in吧?
如果在sqlplus下,执行的方法是
SQL> var c varchar2(20);
SQL> exec get_username(324,:c)
SQL> print c;

是否在navicat下也需要先定义一个变量才能获得结果呢?
直接复制过去是执行不了的

#3


DECLARE
      TMP varchar2(20);
   BEGIN
     TMP:='a';
    get_username(324,TMP);
    dbms_output.put_line(TMP);
END ;


解决了

#4


引用 3 楼  的回复:
DECLARE
      TMP varchar2(20);
   BEGIN
     TMP:='a';
    get_username(324,TMP);
    dbms_output.put_line(TMP);
END ;


解决了

out 参数必须先在外部声明变量,再作为procedure的out参数调用,调用之后即可在后面获取经过procedure处理的out参数变量。

#5


--下面就是调用带参数的存储过程:
bankcurinterestcalculation(var_maxrecorddate,var_idno,benamount => var_benamount4,interest => var_interest4,balance => var_balance4,curbalance => var_curbalance4,sumamount => var_sumamount4,lastbalance => var_lastbalance4)

#6


就着楼主的贴子我想问下:
create or replace procedure REPORTVIEWER_count_type_proc
(@year int) 
as 
begin 
select distinct  a.r_title,b.rdlc_num y_num_e,null m_num_e,null d_num_e,null m_num_s,null y_num_zf,null m_num_zf
from REPORTVIEWER a 
inner join 
(select sum(rdlc_num) as rdlc_num,rdlc_id,user_id from REPORTVIEWER_count d
where to_char(d.create_date,'yyyy')=@year group by rdlc_id,user_id) b 
on b.rdlc_id=a.sid 
inner join s_hse_ticket e on e.reghumsid=b.user_id
where e.erifystate='完成'
end
这样写在Oralce数据中执行exec提示无效SQL语句
请问这是为什么?

推荐阅读
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
author-avatar
奈奈奈酱奈32_875
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有