oracle数据库存储过程代码求解析!!

oracle数据库存储过程代码求解析!!,第1张

楼上也不知道从哪扒下来的,一看LZ就是初学,举点例子不行吗?

比如建立个测试表

create table test

(id int,

name varchar2(10),

counts int)

insert into test values (1,'张三',100)

insert into test values (2,'李四',200)

commit

现在给你出个题目是

查询所有人加在一起的counts是多少

创建存储过程

create or replace p_test --创建存储过程,

as

v_counts int--定义变量

begin --开始

select sum(counts) into v_counts from test--将得到的结果放到变量里

DBMS_OUTPUT.PUT_LINE(v_counts)--将结果打印输出

end--结束

执行这种不带输入参数的

begin

p_test

end

然后你检查下结果

再给你创建一个带输入参数的

题目是,查询id为1的人名是什么

create or replace p_test1

(v_id int)

as

v_name varchar2(10)

begin

select name into v_name from test where id=v_id

DBMS_OUTPUT.PUT_LINE(v_name)

end

执行时这样

begin

p_test1(1)

end

第2个我没给你写注释,你看你自己应该能理解吧

补充一下,存储过程不一定只是执行查询,也可以做删除或者修改等sql语句,总体来说就是几个或N个sql语句的集合,来完成系统内某些特定的需求,这些需求可以是一个sql搞定的,也可以是多个sql组合的

首先,需要在数据库端写好存储过程

其次,使用C#编写通用访问类,代码如下:

//procedureName,存储过程名称;para,参数数组

public int UpdateByProcedure(string procedureName,sqlparameters[] para)

{

sqlconnection conn=new sqlconnection(connString)//connString,连接字符串

sqlcommand cmd=new sqlcommand()

try

{

conn.open()

cmd.commandtype=commandtype.storedprocedure

cmd.commandtext=procedureName

cmd.parameters.addrange(param)

return cmd.excutenonquery()

}

catch(exceptio ex)

{

throw new exception (ex.message)

}

}

接着,写数据访问类

public int AddStudentByProcedure(Student objStu)

{

//定义参数数组,这些是存储过程的输入或输出参数

sqlparameters inputStudentName =new parameters

(

"@StudentName",objStu

)

inputStudentName.direction =direction.input

try

{

return UpdateByProcedure("存储过程名称",param)

}

catch

{

throw new exception("执行方法AddStudentByProcedure出现错误,错误信息:"+ex.message)

}

}

----创建过程

/*

表:对应你数据库的工资

工号:工资表里员工编号字段

日期:工资表里日期字段(不能只要月份,得带上年)

工资:工资表里工资字段

*/

create

proc

[dbo].[pr_qgz](@rq

datetime,@id

varchar(10))

as

begin

--如果工号不为空,则带上工号条件

if(@id

>

'')

begin

select

工号,日期,工资

from

where

工号=@id

and

日期=@rq

end

else

begin

select

工号,日期,工资

from

where

日期=@rq

end

end

go

----调用过程

exec

pr_qgz

'2015-01','001'

---有日期和工号

go

exec

pr_qgz

'2015-01',''

---只有日期

go


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9843015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存