PL/SQL编程—存储过程_Oracle

SQL> create or replace procedure sp_pro3(name_in varchar2,id_in varchar2) is
2 begin
3 update mytest set name=name_in where id=id_in;
4 end;
5 /

Procedure created

SQL> exec sp_pro3('newName','1')

PL/SQL procedure successfully completed

SQL> select * from mytest;

NAME PASSWD ID
------------------------------ ------------------------------ --
newName 123456 1
李超 2222 2
小王 1222 3

在java代码中调用oracle的存储过程

public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","system","rqyz2618");
//3.创建CallableStatement
CallableStatement cs=ct.prepareCall("{call sp_pro3(?,?)}");
//4.给?赋值
cs.setString(1, "gaodingle!!!!");
cs.setString(2, "2");
//5.执行
cs.execute();
//6.关闭
cs.close();
ct.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

这时候会出现一个问题就是拿JDBC去连接的时候会报invalid username/password; logon denied

但是你在sql developer登陆的时候是没有问题的,终于发现了是因为用户类型,之前都是按照sysdba的类型登陆,而用jdbc连接后是默认normal进行登陆的所以回出现登陆不上的问题,新建一个Normal用户或者

alter user XXX identified by xxx

执行以下,不需要改密码,原来的用户,原来的密码就行

 

Normal 普通用户 SysOPer 数据库操作员,主要包括 打开数据库服务器,关闭数据库服务器,备份数据库,恢复数据库,日志归档,会话限制 

sysDBA 数据库管理员,打开数据库服务器 关闭数据库服务器,备份数据库,恢复数据库,日志归档, 会话限制,管理功能,创建数据

一般程序员使用 Normal 方式

 

这个问题也是困扰 dbvisualizer一直登陆不上去的原因

PL/SQL编程—存储过程_块_02

 

PL/SQL编程—存储过程_块_03

作者:​​翎野君​

如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。

转载文章请务必保留出处和署名,否则保留追究法律责任的权利。