社区
Oracle
帖子详情
在 sql*plus 中如何执行存储过程?如果带参数呢?
mary31
2002-08-26 11:20:16
在 sql*plus 中如何执行存储过程?如果带参数呢?
...全文
355
17
打赏
收藏
在 sql*plus 中如何执行存储过程?如果带参数呢?
在 sql*plus 中如何执行存储过程?如果带参数呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xinpingf
2002-08-31
打赏
举报
回复
首先,要确定你的函数的入、出口参数和返回值,这是几个不同的概念:
FUNCTION fun_name( param1 in varchar2, param2 out varchar2) return varchar2 is
...
begin
...
return param3;
end;
这时候,你在外面可以使用
var i_out2 VARCHAR2(20);
var i_out3 VARCHAR2(20);
declare
i_in1 VARCHAR2(10) := 'AAA';
begin
:i_out3 := fun_name(i_in,:i_out2);
end;
/
或者
SET SERVEROUTPUT ON
DECLARE
P1 VARCHAR2(10) := 'AAA';
P2 VARCHAR2(10);
P3 VARCHAR2(10);
BEGIN
P3 := fun_name(p1,p2);
dbms_output.put_line('p1:'||p1);
dbms_output.put_line('p2:'||p2);
dbms_output.put_line('p3:'||p3);
END;
/
mary31
2002-08-30
打赏
举报
回复
我怎么还没有调试过去呢
先等一下,不过还是先谢谢 penitent(只取一瓢) 、 jakarta(长风大侠)
jlandzpa
2002-08-28
打赏
举报
回复
呵呵,可以结贴了.
Croatia
2002-08-28
打赏
举报
回复
可以了!
var i_out1 number;
var i_out2 VARCHAR2(200);
declare
i_in integer := 1;
begin
:i_out1 := function_name(i_in,:i_out2);
end;
/
PRINT i_out2;
penitent
2002-08-28
打赏
举报
回复
其实在sql plus中不用写begin end;
直接这么写
select function_name(30) from dual;
把进口参数写进出,用select 就可以执行函数。
Croatia
2002-08-28
打赏
举报
回复
i_out2 不用吗?
上面的句子出错的!
错误信息,说i_out1没有定义.
penitent
2002-08-28
打赏
举报
回复
函数是没有out参数的。
在别的过程或应用程序中调用函数,得这么写
select function_name(i_in) into i_out1 from dual
jlandzpa
2002-08-28
打赏
举报
回复
var i_out1 number;
var i_out2 VARCHAR2(200);
declare
i_in integer := 1;
begin
i_out1 := function_name(i_in);
end;
--function_name return i_out2;
Croatia
2002-08-28
打赏
举报
回复
怎么没有人回答了?
Croatia
2002-08-27
打赏
举报
回复
谢谢大家.
但是因为我没有其他的软件工具,
所以在SQL/PLUS里面执行,
但是每次我写了类似jakarta(长风大侠)的方法,就是用了BEGIN,END
就不对了!
为什么呢?
Croatia
2002-08-27
打赏
举报
回复
var i_out1 number;
var i_out2 VARCHAR2(200);
declare
i_in integer := 1;
begin
exec :i_out1 := function_name(i_in,:i_out2);
end;
/
我做的是一个函数.
jakarta
2002-08-27
打赏
举报
回复
贴出代码
fbjia
2002-08-26
打赏
举报
回复
用Call语句,不过,这个语句只能在SQL语句中用,不能在PL/SQL语句中用,如果要在PL/SQL中用,就的用动态SQL,如execute immediate "call packagename.procedure(a,b,c)"
希望能对你有帮助。
jakarta
2002-08-26
打赏
举报
回复
1.no parm
exec procedure_name; -
2.in,out parms:
SOL>var i_out number; --out parm
sql>declare
i_in integer := 1; -- in parm
begin
exec procedure_name(i_in,:i_out);
end;
/
sql>print i_out
penitent
2002-08-26
打赏
举报
回复
单步调试过程,得用第三方软件,如pl/sql developer
penitent
2002-08-26
打赏
举报
回复
除了jakarta(长风大侠)
的方法,还有
sql>variable mypara1 varchar2(20) :='in para';
sql>variable mypara2 number
sql>exec myprocedure(mypara1,:mypara2);
Croatia
2002-08-26
打赏
举报
回复
jakarta(长风大侠)
我写的是过程,应该怎么调用呢?
谢谢!
SQL
* PLUS 概述与常用命令
简介 &...在
SQL
*PLUS
中
,用户可以
执行
输入的
SQL
语句、PL/
SQL
语句,以及各种
sql
*plus命令,还可以格式化
SQL
,PL/
SQL
语句的输出结果等。
SQL
*PLUS的命令类型:
SQL
: 是指DDL 、DML和D
SQL
*PLUS命令的使用大全
我们通常所说的DML、DDL、DCL语句都是
sql
*plus语句,它们
执行
完后,都可以保存在一个被称为
sql
buffer的内存区域
中
,并且只能保存一条最近
执行
的
sql
语句,我们可以对保存在
sql
buffer
中
的
sql
语句进行修改,
PL/
SQL
执行
oracle
存储过程
1.在PL/
SQL
中
可以直接引用
存储过程
(在
SQL
*PLUS
中
调用
存储过程
时需要使用call或者execute命令); 2.当调用
存储过程
时,如果无
参数
,那么直接引用
存储过程
名;如果有输入
参数
,则需提供输入
参数
数值;如果有输出
参数
,...
使用
SQL
*Plus创建ORACLE
存储过程
报编译错误,如何知道具体错误信息?
采用
SQL
*Plus登录ORACLE数据库,创建
存储过程
如果报错的话,往往就提示一句“Warning: Procedure created with compilation errors.”,如何显示或定位出详细的错误信息? 方法一: 在
SQL
*Plus
中
输入命令:
SQL
*Plus
中
替换变量与定义变量
SQL
*Plus
中
的替换变量又叫替代变量,它一般用来临时存储相关数据;在
SQL
语句之间传递值。一般使用&或&&前缀来指定替换变量. 关于使用替换变量,一般是利用其创建通用的脚本或达到和用户交换目的。如下所示: 例如,...
Oracle
17,086
社区成员
55,238
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章