create sequence seq_loginfo;
create table loginfo
(
id number primary key,
logName varchar(20) not null,
logPass varchar(20) not null
);
--drop TABLE loginfo;
insert into loginfo(id, logname, logpass) values (seq_loginfo.nextval,'admin','123');
select * from loginfo;
create or replace function validLogin(loginName_ varchar2,
loginPwd_ varchar2) return number is
cursor login_ is
select * from loginfo t where t.logname = loginName_;
r login_%Rowtype;
begin
open login_;
fetch login_
into r;
close login_;
if (r.logPass is not null) then
if (r.logPass = loginPwd_) then
return 1;
else
return 0;
end if;
else
return 0;
end if;
end;
declare
returnNumber_ number;
begin
returnNumber_ := validLogin('admin', '123');
dbms_output.put_line('returnNumber_ :=' || returnNumber_);
end;
create or replace procedure login_proc(
loginname_ in loginfo.logname%type,
loginpwd_ in loginfo.logpass%type,
returnMsg_ in out varchar2) is
cursor login_ is select * from loginfo t where t.logname=loginname_;
r login_%Rowtype;
begin
open login_;
fetch login_ into r;
close login_;
if(r.logPass is not null) then
if(r.logPass = loginpwd_ )then
returnMsg_:='登录成功';
else
returnMsg_:='密码错误';
end if;
else
returnMsg_:='用户名有误';
end if;
end;
declare
returnMsg_ varchar2(200);
begin
login_proc('admin', '123', returnMsg_);
dbms_output.put_line('returnMsg_ :=' || returnMsg_);
end;
create or replace package Login__ is
function validLogin(loginName_ varchar2,
loginPwd_ varchar2) return number;
procedure login_proc(loginname_ in
loginfo.logname%type,
loginpwd_ in loginfo.logpass%type,
returnMsg_ in out varchar2);
end;
create or replace package body Login__ is
function validLogin(loginName_ varchar2, loginPwd_ varchar2) return number is cursor login_ is
select * from loginfo t where t.logname = loginName_;
r login_%Rowtype;
begin
open login_;
fetch login_
into r;
close login_;
if (r.logPass is not null) then
if (r.logPass = loginPwd_) then
return 1;
else
return 0;
end if;
else
return 0;
end if;
end;
procedure login_proc(loginname_ in loginfo.logname%type,
loginpwd_ in loginfo.logpass%type,
returnMsg_ in out varchar2) is
cursor login_ is
select * from loginfo t where t.logname = loginname_;
r login_%Rowtype;
begin
open login_;
fetch login_
into r;
close login_;
if (r.logPass is not null) then
if (r.logPass = loginpwd_) then
returnMsg_ := '登录成功';
else
returnMsg_ := '密码错误';
end if;
else
returnMsg_ := '用户名有误';
end if;
end;
end;
declare
returnNumber_ number;
begin
returnNumber_ := login__.validLogin('admin', '123');
dbms_output.put_line('returnNumber_ :=' || returnNumber_);
end;
declare
returnMsg_ varchar2(200);
begin
login__.login_proc('admin', '123', returnMsg_);
dbms_output.put_line('returnMsg_ :=' || returnMsg_);
end;
declare
isnumber number;
begin
isnumber := login__.ISNUMBER('12213');
dbms_output.put_line('isnumber :=' || isnumber);
end;
分享到:
相关推荐
在Oracle数据库中,PL/SQL(Procedural Language/Structured Query Language)是一种结构化查询语言的扩展,它允许开发人员编写复杂的数据库应用程序。本文将深入探讨在PL/SQL中Oracle的函数、过程、包以及事务管理...
在Oracle中,这样的包通常是开发人员自定义编写的,包含了一系列的PL/SQL程序单元,如过程(PROCEDURE)和函数(FUNCTION)。它们通过调用特定的API或者内置功能来完成汉字转拼音的任务。例如,可能会使用Oracle的...
标题和描述中提到的“大型项目Oracle sql,function,procedures,package,cursor,job”涉及的是Oracle数据库管理和开发的核心概念。以下是对这些概念的详细解释: 1. **SQL(Structured Query Language)**:SQL...
EXECUTE my_package.update_salary(7788, 5000); ``` 通过以上详细介绍,我们可以看出存储过程、函数和包都是Oracle数据库中非常重要的组件。它们不仅可以提高程序的性能,还可以简化复杂的业务逻辑处理,使得代码...
3. **子程序**:PL/PROCEDURE和FUNCTION是PL/SQL中的两种主要子程序。PROCEDURE用于执行一系列操作,不返回值;FUNCTION执行操作并返回一个值。它们可以有参数,并且可以嵌套定义。 4. **游标**:游标是处理单行...
在Oracle数据库中,字符串处理是常见的操作之一,特别是在数据处理和分析中。本文将详细介绍如何在Oracle中实现字符串分隔,以及提供一个实用的面向对象的解决方案。 在Oracle中,字符串分隔通常涉及到将一个长字符...
my_package.my_procedure(5, v_result); DBMS_OUTPUT.PUT_LINE(v_result); END; ``` 包和过程在实际应用中的好处包括: - **代码复用**:通过将相关的函数和过程组织在一起,可以避免代码重复,提高开发效率。 - ...
6. **子程序**:包括函数(FUNCTION)和过程(PROCEDURE)。函数返回一个值,而过程只执行一系列操作但不返回值。它们可以接受参数,并且可以被其他PL/SQL代码调用。 7. **游标**:游标用于逐行处理查询结果,是PL/...
Oracle数据库中的Package是一种高级的模块化编程工具,它允许开发者将相关的过程、函数、变量和类型等编程元素组合在一起,形成一个逻辑上的整体。Package在Oracle数据库系统中扮演着重要的角色,提供了更好的代码...
4. **PL/SQL子程序**:包括函数(Function)和过程(Procedure),它们是一组可重用的PL/SQL代码块。函数返回一个值,而过程不返回值,但可以修改程序状态或数据库。 5. **游标(Cursor)**:在PL/SQL中,游标用于...
3. **PL/SQL语法**:书中会详细介绍PL/SQL的语法,如声明变量、常量,使用流程控制语句(如IF-THEN-ELSIF,CASE,FOR循环),编写子程序(PROCEDURE和FUNCTION),以及异常处理机制。 4. **游标**:游标是PL/SQL中...
DBLink(Database Link)是一种允许在一个Oracle数据库实例中访问另一个Oracle数据库实例中的对象的技术。DBLink的应用场景非常广泛,例如在不同的数据库实例之间复制数据、合并多个数据库中的数据等。 #### 七、...
7. 函数(function): 类似于存储过程,但返回一个值,文档中并未明确提及。 8. 包(package): 一组相关的过程、函数、变量和SQL语句的集合,如“pkg_”。 9. 类型(type): 用户自定义的数据结构,文档中提及了...
在Oracle的PL/SQL环境中,为了更好地支持程序模块化的需求,引入了一种重要的概念——**包**。包作为一种数据库对象,能够将逻辑上相关的PL/SQL类型、对象和子程序等组合成一个更大的单位,实现了对这些PL/SQL程序...
根据提供的标题、描述和部分上下文内容,我们可以总结并生成以下与Oracle 10g PL/SQL编程相关的知识点: ### 一、Oracle 10g简介 Oracle 10g是Oracle公司推出的一个数据库管理系统,它标志着Oracle产品线的一个...
在Oracle PL/SQL中,这些处理函数可以是过程(Procedure)或者函数(Function)。它们需要根据不同的业务逻辑来编写,并确保它们能够正确处理相应类型的请求。 最后,连接消息ID和处理函数是将消息ID与对应的处理...
PACKAGE是一组FUNCTION和PROCEDURE的集合,用于完成一个商业功能。 3. 取某个序列的当前值的PL/SQL语句是什么? 答案:SELECT 序列名.CURRVAL FROM DUAL; 4. ORACLE数据库实例与ORACLE用户的关系是什么? 答案:...
session.createNativeQuery("BEGIN YOUR_PACKAGE.YOUR_PROCEDURE; END;") .executeUpdate(); transaction.commit(); session.close(); ``` 如果存储过程或函数需要传入参数,我们可以这样处理: ```java String ...