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)