简单的oracle存储过程
1、 oracle 存储过程以及 asp.NET 中调用存储过程,实现一个简单的登录功能,只是作为学习的,所以处理可能不太合理。 ① 在 PL/SQLDeveloper 中编写存储过程 新建 Procedures ,一个简单的登录检查存储过程代码如下: createorreplaceprocedureuser_login(s
1、oracle存储过程以及asp.NET中调用存储过程,实现一个简单的登录功能,只是作为学习的,所以处理可能不太合理。
① 在PL/SQL Developer中编写存储过程
新建Procedures,一个简单的登录检查存储过程代码如下:
create or replace procedure user_login(sname in nvarchar2 ,spassword in nvarchar2, ReturnValue out number)
is --变量声明
Rname nvarchar2(20);
Rpassword nvarchar2(50);
begin
ReturnValue :=0; --赋初值
select username into Rname from userinfo where username=sname;
if Rname is not null then
ReturnValue:=1;--用户名存在
select userpassword into Rpassword from userinfo where username=sname and userpassword=spassword;
if Rpassword is not null then
ReturnValue:=2;--登陆成功
else ReturnValue:=1;--用户名存在,密码不正确
return ;
end if;
else ReturnValue:=0;--用户不存在
end if;
exception
when no_data_found then
DBMS_OUTPUT.put_line('没有找到数据');
end;
② 在PL/SQL Developer的SQL窗口中调用存储过程
declare --变量声明
ReturnValue number(10);
begin
user_login('faith','faith',ReturnValue);
if ReturnValue=0 then
DBMS_OUTPUT.put_line('不存在此用户');
elsif ReturnValue=1 then
DBMS_OUTPUT.put_line('存在用户,但密码不正确');
else
DBMS_OUTPUT.put_line('登录成功!!!');
end if;
end;
③ 在VS2012中调用存储过程
在OracleHelper.cs文件中:
public static void iRunProc(string procName, OracleParameter[] paras)
{
OracleConnection conn=new OracleConnection(OracleHelper.strConn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
OracleCommand cmd = new OracleCommand(procName, conn);
cmd.CommandType = CommandType.StoredProcedure;
if (paras != null)
{
for (int i = 0; i
{
OracleParameter parameter = paras[i];
cmd.Parameters.Add(parameter);
}
}
int result = cmd.ExecuteNonQuery();
cmd.ExecuteNonQuery();
}
DAL层的webtestDal.cs文件中
public static int loginByProc(string name,string password,string procName)
{
OracleParameter[] parameters ={
new OracleParameter("sname", OracleType.NVarChar, 20),
new OracleParameter("spassword", OracleType.NVarChar, 50),
new OracleParameter("ReturnValue", OracleType.Number, 10)
};
parameters[0].Value = name;
parameters[1].Value = password;
//parameters[2].Value = 0;
parameters[0].Direction = ParameterDirection.Input;
parameters[1].Direction = ParameterDirection.Input;
parameters[2].Direction = ParameterDirection.Output;
try
{
OracleHelper.iRunProc(procName, parameters);
int i = int.Parse(parameters[2].Value.ToString());
return i;
}
catch (Exception e)
{
throw e;
}
}
在BLL层的webtestBll.cs文件中
public static int loginByProc(string name, string password, string procName)
{
return webtestDal.loginByProc(name, password, procName);
}
在页面代码的登录按钮事件中
protected void btnSubmit_Click(object sender, EventArgs e)
{
string name = this.txtName.Text.Trim();
string password = this.txtPassword.Text.Trim();
//调用存储过程,判断是否登录成功
if (webtestBll.loginByProc(name, password, "user_login")==2)//存储过程输出2表示登录成功
{//登录成功,保存用户名和密码的cookie
HttpCookie mycookie = new HttpCookie("loginCookie");
mycookie.Values.Add("cname", name);
mycookie.Values.Add("cpassword", password);
mycookie.Expires = DateTime.Now.AddHours(4);//cookie的生命期
Response.AppendCookie(mycookie);
Response.Redirect("userinfo.aspx");
}
else if (webtestBll.loginByProc(name, password, "user_login") == 1)
{
// Response.Write("");
RegisterClientScriptBlock("msg", "<script>alert(\"密码错误!\");</script>");
}
else
RegisterClientScriptBlock("msg", "<script>alert(\"无法认证!\");</script>");
}
2、登录之后,传递cookie值
先获取登录界面的cookie值(代码如上)
将登录页面的cookie值传给跳转页面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = webtestBll.getAll();
userInfoGrid.DataSource = dt;
if (dt != null)
userInfoGrid.DataBind();
HttpCookie mycookie = null;
if (Request.Cookies.Get("loginCookie") != null)
{//当用户登录了时,获取页面传来的cookie值
mycookie = Request.Cookies.Get("loginCookie");
this.txtLoginName.Text = mycookie.Values["cname"].ToString();
this.txtLoginPassword.Text = mycookie.Values["cpassword"].ToString();
}
else
{//cookie过期或者没登录
Response.Redirect("userLogin.aspx?errorMsg=您还没登陆,请先登陆!");
}
}
}

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Oracle 打不开的解决办法包括:1. 启动数据库服务;2. 启动监听器;3. 检查端口冲突;4. 正确设置环境变量;5. 确保防火墙或防病毒软件未阻止连接;6. 检查服务器是否已关闭;7. 使用 RMAN 恢复损坏的文件;8. 检查 TNS 服务名称是否正确;9. 检查网络连接;10. 重新安装 Oracle 软件。

解决 Oracle 游标关闭问题的方法包括:使用 CLOSE 语句显式关闭游标。在 FOR UPDATE 子句中声明游标,使其在作用域结束后自动关闭。在 USING 子句中声明游标,使其在关联的 PL/SQL 变量关闭时自动关闭。使用异常处理确保在任何异常情况下关闭游标。使用连接池自动关闭游标。禁用自动提交,延迟游标关闭。

Oracle 中,FOR LOOP 循环可动态创建游标, 步骤为:1. 定义游标类型;2. 创建循环;3. 动态创建游标;4. 执行游标;5. 关闭游标。示例:可循环创建游标,显示前 10 名员工姓名和工资。

可以通过 EXP 实用程序导出 Oracle 视图:登录 Oracle 数据库。启动 EXP 实用程序,指定视图名称和导出目录。输入导出参数,包括目标模式、文件格式和表空间。开始导出。使用 impdp 实用程序验证导出。

Oracle 日志文件写满时,可采用以下解决方案:1)清理旧日志文件;2)增加日志文件大小;3)增加日志文件组;4)设置自动日志管理;5)重新初始化数据库。在实施任何解决方案前,建议备份数据库以防数据丢失。

Oracle不仅是数据库公司,还是云计算和ERP系统的领导者。1.Oracle提供从数据库到云服务和ERP系统的全面解决方案。2.OracleCloud挑战AWS和Azure,提供IaaS、PaaS和SaaS服务。3.Oracle的ERP系统如E-BusinessSuite和FusionApplications帮助企业优化运营。

在CentOS系统上搭建Hadoop分布式文件系统(HDFS)需要多个步骤,本文提供一个简要的配置指南。一、前期准备安装JDK:在所有节点上安装JavaDevelopmentKit(JDK),版本需与Hadoop兼容。可从Oracle官网下载安装包。环境变量配置:编辑/etc/profile文件,设置Java和Hadoop的环境变量,使系统能够找到JDK和Hadoop的安装路径。二、安全配置:SSH免密登录生成SSH密钥:在每个节点上使用ssh-keygen命令

要停止 Oracle 数据库,请执行以下步骤:1. 连接到数据库;2. 优雅关机数据库(shutdown immediate);3. 完全关机数据库(shutdown abort)。
