java.sql.SQLException: ORA-06550: 第 1 行, 第 13 列:
PLS-00201: 必须说明标识符 'T_PKG.GET_VALUE'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:656)
at com.inventec.packages.JDBCDemo.test(JDBCDemo.java:45)
at com.inventec.packages.JDBCDemo.main(JDBCDemo.java:32)我的代码:
--创建表
CREATE TABLE T
(COL1 NUMBER PRIMARY KEY, COL2 VARCHAR2(10));
insert into t values (1, 'Hello');
insert into t values (2, 'World');
--创建包和声明函数
CREATE OR REPLACE
PACKAGE T_PKG AS
G_COUNT NUMBER := 0;
FUNCTION GET_VALUE(p_col1 NUMBER) RETURN VARCHAR2;
PROCEDURE GET_VALUE2(p_col1 NUMBER, p_col2 OUT VARCHAR2);
END;--创建包中函数的实现
create OR REPLACE
PACKAGE BODY T_PKG AS
FUNCTION GET_VALUE(p_col1 NUMBER) RETURN VARCHAR2
IS
v_value VARCHAR2(10);
BEGIN
g_count := g_count + 1;
SELECT col2 INTO v_value FROM t WHERE col1 = p_col1;
RETURN v_value||', Execution Count = '||g_count;
END;
PROCEDURE GET_VALUE2(p_col1 NUMBER, p_col2 OUT VARCHAR2)
IS
BEGIN
g_count := g_count + 1;
SELECT col2 INTO p_col2 FROM t WHERE col1 = p_col1;
p_col2 := p_col2||', Execution Count = '||g_count;
END;
END;
--在java中的实现------------
import java.sql.*;
import oracle.jdbc.driver.OracleDriver;public class JDBCDemo {
static Connection conn;
public static void main(String[] args) {
try {
DriverManager.registerDriver( new OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "ora15", "oracle");
test("{? = call t_pkg.get_value(1)}");
test("{call t_pkg.get_value2(2, ?)}");
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void test(String pStmt) throws SQLException {
CallableStatement stmt = conn.prepareCall(pStmt);
stmt.registerOutParameter(1, Types.VARCHAR);
stmt.execute();
String result = stmt.getString(1);
System.out.println("Result is: " + result);
stmt.close();
}
}JAVA:
/**
*
*/
package com.inventec.packages;import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
import oracle.jdbc.driver.OracleDriver;/**
* @author Ivan Ling
* @2007-4-25 下午01:38:39
* @company
*/
public class JDBCDemo {
static Connection conn; /**
* @param args
*/
public static void main(String[] args) {
try {
DriverManager.registerDriver( new OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORA9I", "system", "manager");
//execute function
String sqlfunction="{? = call T_PKG.GET_VALUE(1)}";
test(sqlfunction);
//execute prodecure
String sqlproducer="{call T_PKG.GET_VALUE2(2, ?)}";
test(sqlproducer);
} catch (SQLException e) {
e.printStackTrace();
}
} public static void test(String pStmt) throws SQLException {
//String pstmt="select * from lhj.t";
CallableStatement stmt = conn.prepareCall(pStmt);
stmt.registerOutParameter(1, Types.VARCHAR);
stmt.execute();
String result = stmt.getString(1);
System.out.println("Result is: " + result);
stmt.close();
}}
什么错误,谢谢!
PLS-00201: 必须说明标识符 'T_PKG.GET_VALUE'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:656)
at com.inventec.packages.JDBCDemo.test(JDBCDemo.java:45)
at com.inventec.packages.JDBCDemo.main(JDBCDemo.java:32)我的代码:
--创建表
CREATE TABLE T
(COL1 NUMBER PRIMARY KEY, COL2 VARCHAR2(10));
insert into t values (1, 'Hello');
insert into t values (2, 'World');
--创建包和声明函数
CREATE OR REPLACE
PACKAGE T_PKG AS
G_COUNT NUMBER := 0;
FUNCTION GET_VALUE(p_col1 NUMBER) RETURN VARCHAR2;
PROCEDURE GET_VALUE2(p_col1 NUMBER, p_col2 OUT VARCHAR2);
END;--创建包中函数的实现
create OR REPLACE
PACKAGE BODY T_PKG AS
FUNCTION GET_VALUE(p_col1 NUMBER) RETURN VARCHAR2
IS
v_value VARCHAR2(10);
BEGIN
g_count := g_count + 1;
SELECT col2 INTO v_value FROM t WHERE col1 = p_col1;
RETURN v_value||', Execution Count = '||g_count;
END;
PROCEDURE GET_VALUE2(p_col1 NUMBER, p_col2 OUT VARCHAR2)
IS
BEGIN
g_count := g_count + 1;
SELECT col2 INTO p_col2 FROM t WHERE col1 = p_col1;
p_col2 := p_col2||', Execution Count = '||g_count;
END;
END;
--在java中的实现------------
import java.sql.*;
import oracle.jdbc.driver.OracleDriver;public class JDBCDemo {
static Connection conn;
public static void main(String[] args) {
try {
DriverManager.registerDriver( new OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "ora15", "oracle");
test("{? = call t_pkg.get_value(1)}");
test("{call t_pkg.get_value2(2, ?)}");
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void test(String pStmt) throws SQLException {
CallableStatement stmt = conn.prepareCall(pStmt);
stmt.registerOutParameter(1, Types.VARCHAR);
stmt.execute();
String result = stmt.getString(1);
System.out.println("Result is: " + result);
stmt.close();
}
}JAVA:
/**
*
*/
package com.inventec.packages;import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
import oracle.jdbc.driver.OracleDriver;/**
* @author Ivan Ling
* @2007-4-25 下午01:38:39
* @company
*/
public class JDBCDemo {
static Connection conn; /**
* @param args
*/
public static void main(String[] args) {
try {
DriverManager.registerDriver( new OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORA9I", "system", "manager");
//execute function
String sqlfunction="{? = call T_PKG.GET_VALUE(1)}";
test(sqlfunction);
//execute prodecure
String sqlproducer="{call T_PKG.GET_VALUE2(2, ?)}";
test(sqlproducer);
} catch (SQLException e) {
e.printStackTrace();
}
} public static void test(String pStmt) throws SQLException {
//String pstmt="select * from lhj.t";
CallableStatement stmt = conn.prepareCall(pStmt);
stmt.registerOutParameter(1, Types.VARCHAR);
stmt.execute();
String result = stmt.getString(1);
System.out.println("Result is: " + result);
stmt.close();
}}
什么错误,谢谢!
解决方案 »
- 求助,关于类的克隆
- java实现的3DES算法与C语言实现的3DES算法结果不同
- 怎样在读入一个JAVA源文件后,<<<<<删除其中的注释>>>>>,<<<<并加上行号>>>>>输出到一个新生成的文件中
- 急,java构造函数没有返回值与void型方法的本质区别(求助)
- 关于WSAD和windows2003的问题(散份)
- 怎么样重绘一个窗体?
- Java为什么分J2se,J2EE/EJB/JMS,J2ME,Java WebServices & XML/Soap,JSP/Servlet/JavaBean等
- 浮点数取余?
- 有人能发我一份 java 做的 聊天室 原码 么? 高分相送
- Curator的DistributedAtomicValue是否提供绝对原子性?
- Java 双向链表的实现
- 急!!! 求救:如何在elipse中关联源tomcat代码???
应该写成:
{ ? = call yourProcedure(?, ?, ?) }