怎样在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工具里执行存储过程吗?
试试这个
declareid varcahr2(100);
call CALLCENTER_CHECK_CALLERID(mobile,id);
end;追问
就是在Navicat上的查询执行
追答你这个过程是有out参数的,所以需要用语句块扩起来。上面的写法有问题。应该是这样
没有out参数的,可以直接call
call CALLCENTER_CHECK_CALLERID(入参);有out参数的的
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之类的操作可以更好的验证.
如果你要显示出来的话,这么写
declaremobile 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调用存储过程的主要内容,如果未能解决你的问题,请参考以下文章