怎样在sql语句中oracle调用存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在sql语句中oracle调用存储过程相关的知识,希望对你有一定的参考价值。

CREATE OR REPLACE
PROCEDURE CALLCENTER_CHECK_CALLERID(Mobile IN VARCHAR2,id out VARCHAR2)
AS
BEGIN
SELECT "Id" INTO id FROM "User_Info" WHERE "Mobile" = Mobile;
END CALLCENTER_CHECK_CALLERID;
我是在Navicat上调用的

sql语句中只能执行函数,不能执行存储过程。比如

select 函数(参数) from dual

你说的是在Navicat工具里执行存储过程吗?

试试这个

declare
id varcahr2(100);
call CALLCENTER_CHECK_CALLERID(mobile,id);
end;

追问

就是在Navicat上的查询执行

追答

你这个过程是有out参数的,所以需要用语句块扩起来。上面的写法有问题。应该是这样

没有out参数的,可以直接call

call CALLCENTER_CHECK_CALLERID(入参);

有out参数的的

declare
mobile varchar2(100);
id varcahr2(100);
begin
 mobile:='你的入参';
 CALLCENTER_CHECK_CALLERID(mobile,id);
end;

你试试看

追问

可以了..那能不能让它的数据显示出来?

追答

看来你接触oracle不久吧,我把单词写错了你也没自己纠正一下.干脆从头到尾给你来个全过程吧

--创建表
create table User_Info
(
id varchar2(100),
mobile varchar2(100)
);

--插入数据
insert into User_Info
values('1','你的入参');
commit;

--创建存储过程
CREATE OR REPLACE PROCEDURE CALLCENTER_CHECK_CALLERID(Mobile IN VARCHAR2,id out VARCHAR2)
AS
BEGIN
 SELECT Id INTO id FROM User_Info WHERE Mobile = Mobile;
END CALLCENTER_CHECK_CALLERID;

--执行过程
declare
mobile varchar2(100);
id varchar2(100);
begin
 mobile:='你的入参';
 CALLCENTER_CHECK_CALLERID(mobile,id);
end;

只不过你这样执行是什么都看不到的。在过程里做些insert,update之类的操作可以更好的验证.

如果你要显示出来的话,这么写

declare
mobile varchar2(100);
id varchar2(100);
begin
 mobile:='你的入参';
 CALLCENTER_CHECK_CALLERID(mobile,id);
 dbms_output.put_line(id);
end;

然后到output页就可以看到输出了

追问

我想要的是像sqlserver的那样..能不能实现的?

我的确刚接触oracle的

追答

sqlserver我十年没接触了,不知道你是想要什么效果。在oracle里,函数和存储过程都只是用于处理逻辑的,不用于展示数据。如果你要查看数据就直接用select语句,或者建个视图(view)

参考技术A 我试验过了,就是exec 存储过程名或者execute 存储过程名(参数),请你在仔细确认一下,你的存储过程名写没写对呀,或者你没有进入sqlplus中?

----
以上,希望对你能有帮助。

sql server中怎样创建保存数据的存储过程

在SQL Server中,可以使用两种方法创建存储过程 :
利用SQL Server 管理平台创建存储过程。
使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。
创建存储过程时,需要确定存储过程的几个组成部分:
①所有的输入参数以及传给调用者的输出参数。
②被执行的针对数据库的操作语句,包括调用其它存储过程的语句。
③返回给调用者的状态值,以指明调用是成功还是失败。
④捕获和处理潜在的错误所需的任何错误处理语句
定义存储过程的语法
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型 = 默认值 OUTPUT,
…… ,
@参数n 数据类型 = 默认值 OUTPUT
AS
SQL语句
GO
参考技术A 找到你建的数据库->可编程性->存储过程->单击右键新建:
create procedure [dbo].[book1]
as select BookId , BookName , SimpleCountent
from Book
单击执行按钮->然后刷新一下存储过程即可。
试试吧
参考技术B 保存什么数据?如果是插入数据到表中
直接在存储过程里用Insert into表就可以了追问

保存数据库表中已有的数据信息

追答

还是没看懂

追问

编写一个存储过程,保存产品表中的信息

追答

保存到哪里?

参考技术C 数据库 ->可编辑性 ->存储过程-> 新建存储过程 参考技术D 存储过程其实就是一些SQL语句+特定的格式语句+条件控制语句

以上是关于怎样在sql语句中oracle调用存储过程的主要内容,如果未能解决你的问题,请参考以下文章

oracle中存储过程的调用 恳请大家帮忙,谢谢~~

oracle中的存储过程有啥作用,该怎么理解?(数据更新的话用update语句不就完了吗)

oracle存储过程中执行查询sql语句报错

oracle的存储过程?

oracle存储过程中循环调用存储过程

SQL的存储过程 语法格式是啥?