-
语法:create or replace procedure 过程名(参数列表)
as
plsql程序体
查看全部 -
创建一个带参数的存储过程:
查看全部 -
创建和使用存储过程:
查看全部 -
链接数据库查看全部
-
存储函数语法
create [or replace] FUNCTION 函数名(参数列表)
return 函数值类型
as
plsql子程序体;
create or replace function query (eno in number) -- number是数据类型
return number --返回类型为number
as
psal emp.sal%type; -- 定义变量;
begin
select sal into psal from emp where empno = eno;
return psal*12 +nvl(empno,0); -- nvl()去空函数,如果empno为null,赋值为0
end;
查看全部 -
--带参存储过程
create or replace procedure raisesalary(eno in number) --in 代表输入
as
--定义一个变量保存涨前的薪水
psal emp.sal%type --变量 psal 参数类型emp表的sal字段的类型
begin
select sal into psal from emp where empno = eno; --查询emp的sal字段 into(赋值)给psal
update emp set sal = sal+100 where empno=eno;
--打印
dbms_output.pun_line(psal);
end;
查看全部 -
java调用存储过程查看全部
-
nvl(xx, 0) 如果为空则至零查看全部
-
package demo.oracle;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import org.junit.Test;
import demo.utils.JDBCUtils;
import oracle.jdbc.internal.OracleCallableStatement;
import oracle.jdbc.internal.OracleTypes;
public class TestCursor {
@Test
public void testCursor() {
String sql = "{call package1.emplist(?,?)}";
Connection conn = null;
CallableStatement call = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
call = conn.prepareCall(sql);
call.setInt(1,10);
call.registerOutParameter(2, OracleTypes.CURSOR);
call.execute();
rs = ((OracleCallableStatement)call).getCursor(2);
while(rs.next()) {
double salary = rs.getDouble("sal");
System.out.println(salary);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.release(conn, call, null);
}
}
}
查看全部 -
package demo.oracle;
import java.sql.CallableStatement;
import java.sql.Connection;
import org.junit.Test;
import demo.utils.JDBCUtils;
import oracle.jdbc.internal.OracleTypes;
public class TestFunction {
@Test
public void testFunction() {
String sql = "{?=call getsal(?)}";
Connection conn = null;
CallableStatement call = null;
try {
conn = JDBCUtils.getConnection();
call = conn.prepareCall(sql);
call.registerOutParameter(1, OracleTypes.NUMBER);
call.setInt(2,7839);
call.execute();
double income = call.getDouble(1);
System.out.println(income);
}catch(Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.release(conn, call, null);
}
}
}
查看全部 -
package demo.oracle;
import java.sql.CallableStatement;
import java.sql.Connection;
import org.junit.jupiter.api.Test;
import demo.utils.JDBCUtils;
import oracle.jdbc.internal.OracleTypes;
public class TestProcedure {
@Test
public void testProcedure() {
String sql = "{call empinform(?,?,?,?)}";
Connection conn = null;
CallableStatement call = null;
try {
conn = JDBCUtils.getConnection();
call = conn.prepareCall(sql);
call.setInt(1,7839);
call.registerOutParameter(2, OracleTypes.VARCHAR);
call.registerOutParameter(3, OracleTypes.NUMBER);
call.registerOutParameter(4, OracleTypes.VARCHAR);
call.execute();
String name = call.getNString(2);
double sal = call.getDouble(3);
String job = call.getNString(4);
System.out.println(name+"\t"+sal+"\t"+job);
}catch(Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.release(conn, call, null);
}
}
}
查看全部 -
package demo.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtils {
private static String driver = "oracle.jdbc.OracleDriver";
private static String url = "jdbc:oracle:thin:@localhost:1521:orcl";
private static String user = "scott";
private static String password = "tiger";
static {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection() {
try {
return DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void release(Connection conn,Statement st,ResultSet rs) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
rs = null;
}
}
if(st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
st = null;
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
conn = null;
}
}
}
}
查看全部 -
不在存储过程提交,回归。保证事务一致性
查看全部 -
存储过程和存储函数
在数据库中供所有用户程序调用的子程序(plsql语言书写的程序)
相同点:完成特定功能的程序
区别:是否用retuen 语句返回值
存储函数可以通过return子句返回函数值
存储过程不可以通过return 子句返回函数值
创建和使用存储过程
存储过程只能创建和替换不能修改
语法 : create [or replace] procedure sayhelloword 存储过程名(参数列表)
as
--说明部分
begin
存储程序;
end;
示例 :
create or replace procedure sayhelloworld
as --说明部分
begin
dbms_output.put_line('hello world'); --输出hello world
end;
调用存储过程
1、sqlplus 调用
exec 存储过程名();
连接sqlplus
sqlplus scott/tiger@localhost:1521/orcl
输入用户名 密码
打开屏幕输出开关
set serveroutput on
调用存储过程
exec sayhelloworld();
2、plsql程序调用
begin
存储过程名(); --可以调用多次
end;
查看全部 -
如何创建和使用存储过程
用create procedure 命令建立存储过程和存储函数
语法:create [or replace] procedure 过程名 (参数列表)
AS
PLSQL子程序体;
注意:存储过程只能创建和替换,不能够修改
第一个存储过程:打印helloworld
create or replace procedure sayHelloWorld
as
--说明部分
begin
dbms_output.put_line("Hello World !");
end;
/
注意:在plsql中使用存储过程或函数时在执行时需要以/结尾
/*
调用存储过程
1、execute 存储过程名();
例如:exec sayHelloWorld();
2.在其他的plsql中调用存储函数
例如:begin
sayHelloWorld();
sayHelloWorld();
end;
/
注意:使用第二种调用方法可以调用多次存储过程
*/
连接数据库:sqlplus scott/tiger@localhost:1521/orcl
说明:sqlplus 用户名/密码@主机号:数据库端口号/数据库实例名称
打开屏幕的复制开关:set serveroutput on
查看全部
举报