Java SQL Resultset DataTypes - PullRequest
       0

Java SQL Resultset DataTypes

0 голосов
/ 25 апреля 2018

Я новичок в Java и возился с существующим Proc.Я пытаюсь выполнить out.write для значения, полученного из результирующего набора SQL 'Grid_ProjectCode', как показано здесь:

sStmt=null;rs=null;sql=null;
sStmt = conn.createStatement();
sql = "select Proj_Code, Placement_ACR, Category_ID, Alt_Aisle_Shelf, Placement_Start_Dt, Placement_End_Dt, Sales_Manager from DH_CURRENT_FUTURE_INVENTORY_VW where Placement_ACR in ('banFSI_ROI', 'banFSI','FSI')";
rs = sStmt.executeQuery(sql);


while ( rs.next() ) 
{
String Grid_ProjectCode = rs.getString("Proj_Code");
String Dup_Placement_ACR = rs.getString("Placement_ACR");

    if (plCode.equalsIgnoreCase(Dup_Placement_ACR))
    {
    out.write("Dupe Found");    
    out.newLine();

    out.write(Grid_ProjectCode);    
    out.newLine();
    }
}

if(conn != null) { rs.close(); sStmt.close(); }

Proc завершается ошибкой со следующей ошибкой (работает, как и ожидалось, когда второй выход.write удален / прокомментирован):

java.lang.ClassCastException: [Ljava.lang.Integer;несовместим с [Ljava.lang.String;

Поле Proj_Code, указанное в запросе SQL, является NVARCHAR2, определенным в схеме Oracle Exadata.

Ошибка предполагает некоторые данныенесоответствие типов, но я не уверен, как это можно исправить;был бы очень признателен за некоторые рекомендации.

Отредактировано, чтобы включить DDL для DH_CURRENT_FUTURE_INVENTORY_vw:

CREATE OR REPLACE FORCE VIEW "UNICA_F1"."DH_CURRENT_FUTURE_INVENTORY_VW" ("PROJ_CODE", "FLAG_PROJ_REQUEST", "OBJECT_ID", "UAP_GRID_ROW_ID", "PLACEMENT_IMPRESSIONS", "SUPPLIER_CATEGORY", "PLACEMENT_CLASH", "PLACEMENT_NAME", "PLACEMENT_AISLE_SHELF", "PLACEMENT_START_DT", "PLACEMENT_RATE", "PLACEMENT_SIZE", "PLACEMENT_END_DT", "PLACEMENT_DURATION", "PLACEMENT_ACR", "SALES_VALUE", "NOTES", "STATUS", "AD_SERVER", "UNIT_NR", "SORT_ORDER", "CATEGORY_ID", "AISLE_SHELF_ID", "PLACEMENT_COUNT", "RETAIL_ACR", "ALT_AISLE_SHELF", "PLACEMENT_SIZE2", "PLACEMENT_SIZE3", "PLACEMENT_SIZE4", "PLACEMENT_SIZE5", "CREATIVE_YN", "CPM", "CREATIVE_SIZE", "PRODUCT_ID", "SALES_AREA", "IMPRESSION_GOAL", "CLIENT_CATEGORY", "CLIENT_SUB_CAT", "BRAND_NM", "FORMAT_DESC", "IMPRESSION_CPM", "IMPRESSION_VALUE", "CREATIVE_COST", "SIZE_DESC", "DELIVERY_PROCESS", "PACKAGE_FLAG", "PACK_ID", "RETARGETING_FLAG", "BATCH_FLAG", "BASE_COST", "DISCOUNT", "CATEGORY", "SALES_MANAGER") AS 
Select
PROJ_CODE, 
FLAG_PROJ_REQUEST, 
OBJECT_ID, 
UAP_GRID_ROW_ID, 
PLACEMENT_IMPRESSIONS, 
SUPPLIER_CATEGORY, 
PLACEMENT_CLASH, 
PLACEMENT_NAME, 
PLACEMENT_AISLE_SHELF, 
PLACEMENT_START_DT, 
PLACEMENT_RATE, 
PLACEMENT_SIZE, 
PLACEMENT_END_DT, 
PLACEMENT_DURATION, 
PLACEMENT_ACR, 
SALES_VALUE, 
NOTES, 
STATUS, 
AD_SERVER, 
UNIT_NR, 
SORT_ORDER, 
CATEGORY_ID, 
AISLE_SHELF_ID, 
PLACEMENT_COUNT, 
RETAIL_ACR, 
ALT_AISLE_SHELF, 
PLACEMENT_SIZE2, 
PLACEMENT_SIZE3, 
PLACEMENT_SIZE4, 
PLACEMENT_SIZE5, 
CREATIVE_YN, 
CPM, 
CREATIVE_SIZE, 
PRODUCT_ID, 
SALES_AREA, 
IMPRESSION_GOAL, 
CLIENT_CATEGORY, 
CLIENT_SUB_CAT, 
BRAND_NM, 
FORMAT_DESC, 
IMPRESSION_CPM, 
IMPRESSION_VALUE, 
CREATIVE_COST, 
SIZE_DESC, 
DELIVERY_PROCESS, 
PACKAGE_FLAG, 
PACK_ID, 
RETARGETING_FLAG, 
BATCH_FLAG, 
BASE_COST, 
DISCOUNT,
CATEGORY,
SALES_MANAGER
from 
(  

    select b.Proj_Code, b.Flag_Proj_Request, a.*, c.Category, d.Sales_Manager
    from dh_ddp_inventory a
    inner join uap_projects b on a.Object_ID = b.Project_ID
    inner join dh_lkp_taxo_categ_vw c on a.Category_ID = c.Category_ID
    inner join dh_ddp_Request d on a.Object_ID = d.Object_ID
    where b.Flag_Proj_Request = 'Y' and a.Placement_End_Dt >= Current_date
    and b.Proj_Code not in (select Proj_Code from uap_projects where Flag_Proj_Request = 'N')

    Union


    select b.Proj_Code, b.Flag_Proj_Request, a.*, c.Category, d.Sales_Manager
    from dh_ddp_inventory a
    inner join uap_projects b on a.Object_ID = b.Project_ID
    inner join dh_lkp_taxo_categ_vw c on a.Category_ID = c.Category_ID
    inner join dh_ddp_Request d on a.Object_ID = d.Object_ID
    where b.Flag_Proj_Request = 'N' and a.Placement_End_Dt >= Current_date

)
Order By Proj_Code asc, Object_ID desc, Placement_Name asc;

1 Ответ

0 голосов
/ 25 апреля 2018

Где-то вы делаете в той или иной форме:

String[] stringArray = ...;
Integer[] intArray = (Integer[]) stringArray;

Как [Ljava.lang.Integer =

  1. массив ([)
  2. класса java.lang.Integer (L)

Чтобы перейти к ошибке:

try {
    ... code ...
} catch (ClassCastException e) {
    e.printStackTrace();           // To System.err.
    e.printStackTrace(System.out); // To System.out.
    logger.error("OMG", e);        // To logger if there is one.
    throw e; // Act as is the exception was not thrown
}

Посмотрите на трассировку стека, он также перечисляет источник, вызвавший ошибку, вместе с номером строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...