Oracle创建plsql调用存储过程程,调用出错,该如何解决

ORACLE存储过程的创建 - 简书
ORACLE存储过程的创建
1.无返回值
&pre&CREATE OR REPLACE PROCEDURE TESTA(paramA IN VARCHAR2,paramB in VARCHAR2)AS
INSERT INTO TNAME (T_id,T_name)values(paramA,paramB);
END TESTA;
java调用代码:
CallableStatement proc =
proc = conn.prepareCall("{ call TESTA(?,?) }");
proc.setString(1, "100");
proc.setString(2, "TestOne");
proc.execute();
2.有返回值
CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2)
SELECT INTO PARA2 FROM TNAME WHERE I_ID= PARA1;
END TESTB;
java调用代码:
CallableStatement proc =
proc = conn.prepareCall("{ call TESTB(?,?) }");
proc.setString(1, "100");
proc.registerOutParameter(2, Types.VARCHAR);
proc.execute();
String testPrint = proc.getString(2);
3.返回列表
--建一个程序包
CREATE OR REPLACE PACKAGE TESTPACKAGE
TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;
--建立存储过程,存储过程为:
CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) AS
OPEN p_CURSOR FOR SELECT * FROM TNAME;
END TESTC;
java调用代码:
CallableStatement proc =
proc = conn.prepareCall("{ call testc(?) }");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet)proc.getObject(1);
苍茫大地一剑尽挽破,何处繁华笙歌落。斜倚云端千壶掩寂寞,纵使他人空笑我。
Java 基础思维导图,让 Java 不再难懂 - 工具资源 - 掘金思维导图的好处 最近看了一些文章的思维导图,发现思维导图真是个强大的工具。了解了思维导图的作用之后,觉得把它运用到java上应该是个不错的想法,这样回顾知识点的时候一目了然,快速知道自己的短板。 思维导图...
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。 1、一个&.java&源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个publ...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
“所谓成功,就是你身边的人,因为有你,而感到快乐。” 比职场失意更可怕的是什么? 是活的越来越酷,家人丢了一路。 这样的事,已经发生了。 2月10日,四川南充张某因妻子经常加班到深夜回家,疑其到处鬼混要求离婚…… 3月20日,厦门王先生因长期出差在外,且没有时间给家中女儿打...
前言 因为这一段时间有需求需要用到文件的存取操作,而之前基本上对于本地数据的存储就是简单数据用NSUserDefaults,复杂点的用归档,再复杂一点的用sql。对于文件存取了解不多。现在需求来了,没办法,只能脱了裤子就是...。文件存储分三节来说: 简单的类型操作,比如N...
我从未想过将自己的故事说给别人听。 毕竟对于一个曾经一无所有的人来说,讲出自己的故事就像扒光自己衣服。 但我坚持将它讲出来,并不是为了煮一锅“我奋斗了多少年才和你喝咖啡”的鸡汤。只是为了用一个三本生的故事告诉你,不要畏惧,大胆地闯,大步地向前走,走到最后,你总会得到自己想要...|版面-数据库技术(Database)主题:OCILIB 调用 oracle 存储过程失败使用OCILIB库调用存储过程时出错:程序代码如下:{&&&&char user_name[20][51];&&&&char *insert_usr_info = "BEGIN USER_INFORMATION.TEST(:name); END;";&&&&cn = OCI_ConnectionCreate("x.x.x.x/x", "x", "x", OCI_SESSION_DEFAULT);&&&&st = OCI_StatementCreate(cn);&&&&OCI_Prepare(st,insert_usr_info);&&&&if(OCI_BindArrayOfStrings(st,":name",(char *)user_name,51,5)==FALSE)&&&&{&&&&&&perror("string2");&&&&&&return 1;&&&&}&&&&for( i = 0,j = 0; i & 5; i++,j++){&&&&&&&&memset(user_name[j],0,51);&&&&&&&&sprintf(user_name[j],"yanyong%d\n",i);&&&&}&&&&OCI_Execute();&&&&OCI_Cleanup();}错误信息如下:code&&: ORA-6550msg&& : ORA-06550: line 1, column 7:PLS-00306: wrong number or types of arguments in call to 'TEST'ORA-06550: line 1, column 7:PL/SQL: Statement ignoredsql&& : BEGIN USER_INFORMATION.TEST(:name); END; row&& :0 type&&:1internal code&&:0系统环境:ocilib-3.4.0-gnu.tar.gzoracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpmoracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpmoracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpmLinux debian201 2.6.26 #3 SMP Sat Jul 18 01:14:19 CST
GNU/Linux 客户端环境~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~存储过程代码:&&PROCEDURE TEST(&&&&&&&&&& user_Dns IN str_arr2) IS &&num NUMBER;&&BEGIN&&&& num:=1;&&&& INSERT INTO YY VALUES('TONG2');&&&& COMMIT;&&&& --RETURN 0;&&&& --FOR i IN user_Dns.First..user_Dns.Last LOOP&&&& --&&INSERT INTO YY VALUES(user_Dns );&&&& --END LOOP;&&&& --COMMIT;&&END;&&其中type str_arr2 is table of varchar2(100); oracle11g安装在32位的linux中,程序运行在64位的linux中新手,项目紧急,希望N人指导--FROM 159.226.43.*从错误代码看,test存储过程传入的参数类型不对【 在 rogerzz (肉结zz~~~) 的大作中提到: 】: 使用OCILIB库调用存储过程时出错:: 程序代码如下:: {: ...................--FROM 119.53.41.21 选择讨论区&BYR-Team2010. KBS Dev-Team2011&&博客分类:
遇到一个问题,如下:
ETL@RACTEST& begin
DBMS_LOCK.sleep(1);
PL/SQL procedure successfully completed.
ETL@RACTEST& CREATE OR REPLACE PROCEDURE etl.pliutest
authid current_user
DBMS_LOCK.sleep(1);
Warning: Procedure created with compilation errors.
Elapsed: 00:00:00.07
ETL@RACTEST& ETL@RACTEST& show errors
Errors for PROCEDURE ETL.PLIUTEST:
LINE/COL ERROR
-------- -----------------------------------------------------------------
PL/SQL: Statement ignored
PLS-00201: identifier 'DBMS_LOCK' must be declared
同一个包,在相同的用户下的匿名程序块中可以执行,但是在存储过程中却没有权限执行,查了下资料,一些DBMS_开头的pkg在pl/sql中用到的时候,需要显示的执行
grant execute on dbms_xxxx to xxx 来赋下权限才可以。此外这个授权system用户是没有权限的,要sys 或者plsql / as dba登录才有权限授权。
授权以后可以看到:
SYSTEM@RACTEST& select grantee,owner,table_name,grantor,privilege from dba_tab_privs where table_name like 'DBMS_LOCK';
TABLE_NAME
--------------------
----------
----------
----------
----------
EXECUTE_CATALOG_ROLE
8 rows selected.
然后再次执行:
SYSTEM@RACTEST& CREATE OR REPLACE PROCEDURE etl.pliutest
authid current_user
DBMS_LOCK.sleep(1);
Procedure created.
转自:http://blog.sina.com.cn/s/blog_6ff05a2c0100mico.html
浏览: 178725 次
来自: 上海
select t.*, rownum rn
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'plsql工具中创建关于存储过程的sql语句如下,但是一直有错,求各路大神看看帮忙解决一下
[问题点数:80分,结帖人Maldivesw]
本版专家分:0
结帖率 60%
CSDN今日推荐
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
匿名用户不能发表回复!
其他相关推荐
转自:http://www.myexception.cn/oracle-management/267605.html——解决方案——————–1、在sql的执行窗口中只能这样调用”call OUT_TIME(); “,这样执行就是把”call OUT_TIME(); “当成一个sql语句,而exec OUT_TIME();不是一个sql语句,是一个执行体,执行体调用必须在命令窗口,把这句话当成一个整
一.创建一个存储过程
里面有个输出参数output
create proc multi
@num1 int,
@num2 int=10 output
--output的功能类似于C#中的out修饰参数
set @num2=@num2*@num1
print @num2
二.执行存储过程
exec multi 5,5这时输出:25
忽略了输出参数的默认值10
今天,写存储过程时写成了:if...then...else if....else...end if.能编译通过,但是有问题,后来实在是找不到问题怀疑写错了这个语句,后来在网上查了一下,结果不是else if 而是elsif.改过来后就正常了。
Oracle/PLSQL: IF-THEN-ELSE Statement
There are three different syntaxe
第一:导出数据建表语句,存储过程,视图等打开plsql,如图,点击工具————导出用户对象
点击导出用户对象。如图所示:
如图勾选即可。可以选择你要导出的对象。也可以不选中,这样将会导出所有的对象。导出的文件为.sql格式。导出建表语句以及表中数据点击工具————导出表
之后进入如下图页面:
最后点击导出按钮即可。导出的文件格式为dmp、导出的内容包含建表语句,以及表中数据如何将导出
SLF4J: Failed to load class &org.slf4j.impl.StaticLoggerBinder&.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for furth
这几天项目任务中需要建立一个存储过程接口,以方便后续的调用,由于之前没怎么在Oracle PL/SQL中新建过存储过程,所以花了些时间去看,结果发现通过百度到的都是些存储过程的知识而非PL/SQL中的新建-查看结果的过程。所以决定写一篇图文结合的文章来讲述PL/SQL中从新建到查看结果的过程。
首先需要的工具:PL/SQL
1.新建存储过程
方法一:File-&New-&Program Win
SELECT * from EMP1;
然后我们利用PL/SQL给这条表中插入数据
显示调用成功
此时我们再到数据库中去查询数据
然后我们利用PL/SQL给这条表中修改数据
此时再查emp1表
因为以前一直用sql server多,现在一下子用oracle ,d
最近需要写一个oracle的定时任务,以前没弄过,记录一下,我这是用PLSQL创建的
首先建一个测试表,create table t_test(time date)写一个执行任务的存储过程
create or replace procedure proc_test as
insert into t_test(time) values(sysdate);
end proc_t
oracle编译存过卡住处理:
问题描述:
在编译某个存过时,由于没提交或断网或者test没停止又重新编译,导致编译存过一直卡死
问题分析:
存过或某张表被锁
问题处理:
1、查看存过是否锁住,locks不等于零,表示锁住,SELECT * FROM V$DB_OBJECT_CACHE WHERE name='LOGIC_QIANMO_YILONG' AND LOCOracle &&&&最新内容
Oracle &&&&相关内容

我要回帖

更多关于 oracle调用存储过程 的文章

 

随机推荐