相关文章推荐
憨厚的黄豆  ·  python - ...·  2 年前    · 
CREATEORREPLACEPROCEDURECALLCENTER_CHECK_CALLERID(MobileINVARCHAR2,idoutVARCHAR2)ASBEGINSELECT"Id"INTOidFROM"User_Info"WHERE"Mobile"=Mobile;ENDCALLCENTER_CHECK_CALLERID;我... 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上调用的

你这个过程是有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)