这是存储过程:
PROCEDURE SELECT_TEST(P_TIME IN VARCHAR2, P_CAMERAID OUT VARCHAR2) IS
BEGIN
SELECT T.CAMERAID
INTO P_CAMERAID
FROM TB_DENSITY T
WHERE TO_CHAR(T.TIMEAT, 'YYYY-MM-DD HH24:Mi:SS') = P_TIME;
EXCEPTION
WHEN OTHERS THEN
P_CAMERAID := NULL;
END SELECT_TEST;
这是我后台测试的方法,返回的是空值。
public static boolean selectFlag(String time) throws Exception {
String[] str = new String[1]; boolean flag = false; Connection con = null;
CallableStatement cstmt = null;
con = DbManager.getConnection();
cstmt = con.prepareCall("{ call countpkg.SELECT_TEST(?,?)}");
cstmt.setString(1, time);
cstmt.registerOutParameter(2, OracleTypes.VARCHAR);
cstmt.execute();
str[0] = cstmt.getString(2);
System.out.println(str[0]); if (str[0] !=null && !str[0].equals(null))
flag = true; return flag; }
返回的是空值,我这个表里肯定有这个值。就是根据时间查到一个值。
PROCEDURE SELECT_TEST(P_TIME IN VARCHAR2, P_CAMERAID OUT VARCHAR2) IS
BEGIN
SELECT T.CAMERAID
INTO P_CAMERAID
FROM TB_DENSITY T
WHERE TO_CHAR(T.TIMEAT, 'YYYY-MM-DD HH24:Mi:SS') = P_TIME;
EXCEPTION
WHEN OTHERS THEN
P_CAMERAID := NULL;
END SELECT_TEST;
这是我后台测试的方法,返回的是空值。
public static boolean selectFlag(String time) throws Exception {
String[] str = new String[1]; boolean flag = false; Connection con = null;
CallableStatement cstmt = null;
con = DbManager.getConnection();
cstmt = con.prepareCall("{ call countpkg.SELECT_TEST(?,?)}");
cstmt.setString(1, time);
cstmt.registerOutParameter(2, OracleTypes.VARCHAR);
cstmt.execute();
str[0] = cstmt.getString(2);
System.out.println(str[0]); if (str[0] !=null && !str[0].equals(null))
flag = true; return flag; }
返回的是空值,我这个表里肯定有这个值。就是根据时间查到一个值。
解决方案 »
- !!!!!ORA-14404:分区表包含不同表空间中的分区!!!!!
- 一个简单的存储过程
- sql如何获取连续数?
- 求:一下功能如何用存储过程实现?
- oracle中 类似于select top 10的功能的一点问题
- ORA-12170:TNS:Connect timeout occurred是怎么回事??
- 百分求教,如何在sql语句中把一个表中的多条记录合成一个字段,这样能不能实现
- 在ORACLE中我执行了这个语句 alter table nametable drop column s 提示我缺少关键字为什么阿
- oracle 按装和修复问题
- 什么是数据库服务?什么是数据库服务方法?
- 运行时网络适配器不能建立连接?
- Oracle允许执行存储过程但不能查看或导出其定义
如果相同一个时间查询出多条记录,那也会返回空值。
你可以在异常处理中返回输入参数和错误信息:
EXCEPTION
WHEN OTHERS THEN
P_CAMERAID := P_TIME||','||SQLERRM;
WHERE TO_CHAR(T.TIMEAT, 'YYYY-MM-DD HH24:Mi:SS') = P_TIME
条件不一定正确。 SELECT T.CAMERAID
INTO P_CAMERAID
FROM TB_DENSITY T
WHERE TO_CHAR(T.TIMEAT, 'YYYY-MM-DD HH24:Mi:SS') = P_TIME;