oracle存储过程(带参数的存储过程)



带参数的存储过程

举例:为指定的员工涨100元的工资,打印涨前和涨后的工资

如果带参,需要指定是输入参数还是输出参数

create or replace procedure raisesalary(eno in number)

as

 ---定义一个变量保存涨前的薪水,引用emp中sal的类型作为psal的类型

 psal emp.sal%type;

begin

 ---得到员工涨前的薪水

 select sal into psal from emp where empno=eno;

 ---给该员工涨100

 update emp set sal=sal+100 where empno=eno;

 ---需不需要commit?

 ---注意:一般不在存储过程或者存储函数中 commit和rollback

 ---打印涨前和涨后的工资

 dbms_output.put_line(‘涨前:‘||psal||‘涨后:‘||(psal+100));

end;

/

一般在调用存储过程或者函数的时候再commit,这样可以保证所有执行是在同一个事物中进行的

如:

begin

    raisesalary(7839);

    raisesalary(7566);

    commit;

end;

/

一般不在存储过程中commit或者rollback,而是在调用存储过程之后再提交或回滚,这样能把存储过程封装到一个事务中。

 

如果是命令窗口就用exec 存储过程名,举个栗子:

1.如果是命令窗口就用exec 存储过程名,举个栗子:

EXEC  procedure  ;--procedure是存储过程名

2.如果是PL/SQL窗口就用 begin  存储过程名  end; 举个栗子:

begin

  procedure;--procedure是存储过程名

end;

3.如果是程序中调用就用 call 存储过程名 ,举个栗子:

hibernateDao.excuteSqlUpdate("{Call proc_stuInfo()}");//存储过程proc_stuInfo

原文地址:https://www.cnblogs.com/wangchuanfu/p/10960550.html

时间: 2024-08-26 19:17:28

oracle存储过程(带参数的存储过程)的相关文章

c#调用Mysql带参数的存储过程

1.首先创建一个带参数的存储过程 ①存储过程名称=proc_bookinfo  ②存储过程2个参数 一个in 一个out in参数名称=ispay out参数名称=unPaycount ③ 这个存储过程 根据传入的未支付字段名称 输出未支付的商品数量 DELIMITER $$ USE `bookshop`$$ DROP PROCEDURE IF EXISTS `proc_bookinfo`$$ CREATE DEFINER=``@`` PROCEDURE `proc_bookinfo`(IN i

带参数的存储过程

创建带参数的sql存储过程:创建带参数的存储过程首先要在存储过程中声明该参数,每个存储过程参数都必须用惟一的名称进行定义.与标准的Transact-SQL变量相同,参数名必须以@为前缀,创建带参数的存储过程创建带参数的存储过程首先要在存储过程中声明该参数,每个存储过程参数都必须用惟一的名称进行定义.与标准的Transact-SQL变量相同,参数名必须以@为前缀,并且遵从对象标识符规则.当用户不提供该参数的值时可以使用一个默认值来代替.在执行带参数的存储过程时,既可以通过显式指定参数名称并赋予适当

在Java中调用带参数的存储过程

JDBC调用存储过程: CallableStatement 在Java里面调用存储过程,写法那是相当的固定: Class.forName(.... Connection conn = DriverManager.getConnection(.... /** *p是要调用的存储过程的名字,存储过程的4个参数,用4个?号占位符代替 *其余地方写法固定 */ CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}"); /*

shell脚本调用带参数的存储过程

主要有 #!/bin/bash source /etc/profile source ~/.bash_profile ################################################################## #功能描述:调用带有输入参数和输出参数的存储过程 #执行周期:日 # CRONTAB: * 1 * * * * ${prog_path}CALL_PRODEDURE.sh >> ${prog_path}CALL_PRODEDURE.log 2&a

在C#中怎么调用带参数的存储过程啊??

1)执行一个没有参数的存储过程的代码如下:SqlConnection conn=new SqlConnection(“connectionString”);SqlDataAdapter da = new SqlDataAdapter();da.selectCommand = new SqlCommand();da.selectCommand.Connection = conn;da.selectCommand.CommandText = "NameOfProcedure";da.sel

20150825 C# 调用带参数的存储过程 模板

////// exec proceudre2                        //System.Data.SqlClient.SqlConnection sqlcon = new System.Data.SqlClient.SqlConnection("server=(local);database=pubs;uid=sa;pwd=;");                        System.Data.SqlClient.SqlConnection sqlcon

Oracle游标带参数

Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * from d where id=c_id; begin open b(111); end;

php调用oracle带有out参数的存储过程

//入参$in1 = '2017-01-01'; //必填$in2 = '2017-08-01'; //必填$in3 = ''; //选填 $tns = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = dbname) (SID = dbname)))';$conn = oci_connect ('user' , 'password'

MySQL带参数的存储过程小例子

http://wwty.iteye.com/blog/698239 mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现 语法如下: DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement handler_type: CONTINUE | EXIT condition_value: SQLSTATE [VALUE] sqlstate_value | condition_name |