Literal arrays 'in' SQL clauses

Hi All,
I need some help with sql syntax in BPM.
I get the following error when I run my query: Only literal arrays are allowed 'in' SQL clauses
Here is my SQL query:
SELECT *
FROM Laptop.Dbo.INVENTORY
WHERE inventoryid in (SELECT MAX(Laptop.Dbo.INVENTORY.inventoryid)from Laptop.Dbo.INVENTORY)
Anyone know how to write it in BPM?

Hi Lilach,
Sure you tried this, but are you doing this with Dynamic SQL? If you use the code below, be sure to make sure the SQL in quotes runs ok from Squirrel or Toad. If your tables / columns have underscore characters, make sure this is included in the SQL. Change the name of the "extResource" variable to match the string you used when exposing the database in Studio.
String query = "SELECT * FROM Laptop.Dbo.INVENTORY " +
                     "WHERE inventoryid in " +
                     "(SELECT MAX(Laptop.Dbo.INVENTORY.inventoryid)from Laptop.Dbo.INVENTORY)";
String extResource = "YourExternalResourceNameHere";
// this only will return one row so it will enter to loop and immediately leave
foreach (row in DynamicSQL.executeQuery(sentence : query, implname : extResource)) {
    display("Here's your returned value: " + row["inventoryid"]);
}Dan

Similar Messages

  • How to escape a single quotes from a string of dynamic sql clause?

    if a single quotes exist in a dynamic sql clause for a string,
    like
    v_string :='select tname from tab where tabtype='table'',
    there tabtype='table' will conflict with the single quote ahead.
    could somebody tell me how to escape this single quotes?
    thanks for your tips,
    frederick

    fredrick,
    To represent one single quotation mark within a literal, enter two single quotation marks. For example :
    v_string :='select tname from tab where tabtype=''table'''
    Regards,
    Srinivas

  • About case when and the sql clause

    Hi:
    The following is my sql clause:
    SELECT t.*,b.name
    FROM dbtest1 t
    LEFT OUTER JOIN dbtest b ON t.NO = b.empno
    WHERE t.ChineseName like '%'||:ChineseName||'%' AND b.name like '%'||:name||'%'
    ORDER BY t.ChineseName
    The main problem is I hope to check the b.name if it is null it can be passed as NVL function, so I try using case when, but it not working.
    When b.name exist in where clause, the result columns will not include the data without b.name(or implies the b.name is NULL); And that
    make the result data not exactly right.
    is it possible to use case when to make the following snippet implemented:
    case when b.name is not NULL then b.name like '%'||:name||'%'
    else b.name = NULL(b.name=b.name seems not work to parsing null data)
    end
    Thanks a lot.

    962769 wrote:
    Hi:
    The following is my sql clause:
    SELECT t.*,b.name
    FROM dbtest1 t
    LEFT OUTER JOIN dbtest b ON t.NO = b.empno
    WHERE t.ChineseName like '%'||:ChineseName||'%' AND b.name like '%'||:name||'%'
    ORDER BY t.ChineseName
    The main problem is I hope to check the b.name if it is null it can be passed as NVL function, so I try using case when, but it not working.
    When b.name exist in where clause, the result columns will not include the data without b.name(or implies the b.name is NULL); And that
    make the result data not exactly right.
    is it possible to use case when to make the following snippet implemented:
    case when b.name is not NULL then b.name like '%'||:name||'%'
    else b.name = NULL(b.name=b.name seems not work to parsing null data)
    end
    Thanks a lot.Your question isn't very clear. But below is the statement as I make a meaning out of it.
    SELECT t.*,b.name
    FROM dbtest1 t
    LEFT OUTER JOIN dbtest b ON t.NO = b.empno
    WHERE t.ChineseName like '%'||:ChineseName||'%'
         AND b.name like '%'||NVL(:name, b.name)||'%'
    ORDER BY t.ChineseNameIf you want to use case, then:
    SELECT t.*,b.name
    FROM dbtest1 t
    LEFT OUTER JOIN dbtest b ON t.NO = b.empno
    WHERE t.ChineseName like '%'||:ChineseName||'%'
         AND b.name like '%'|| case when b.name is not null then :name else b.name end ||'%'
    ORDER BY t.ChineseNameIf this is not what you are looking for then, read {message:id=9360002} and post the relevant details with an example (Create Table script, Sample Data creation script and the Expected output of the sample data).

  • Can't use ";" in sql clause with Oracle 8.X

    Can't use ";" in sql clause with Oracle 8.X
    I can't use ";" at the ending of sql clause in VB program. First this program can use with Oracle 7.3.4 database. But now i need to upgrade DB to Oracle 8.1.7 ,program can't operate. It show error Runtime 40002
    and 37000:ODBC driver for oracle/invalid charactor
    Thankyou

    I've seen a lot of discussion about semicolons in SQL
    sent from 3rd party applications. A web search should
    bring up the discussions.
    Also you might get more response if you ask this question
    somewhere else. This is not a VB forum, so you may
    not reach relevant people.
    -- CJ

  • Can you see what's wrong with my sql clause?

    Select afkogltri sum( afpowemng ) as yqty
        from   ( afpo inner join afko on afpoaufnr = afkoaufnr )
        into   ( d_gltri , d_wemng )
        where  afpo~matnr = wa_pir-matnr
               and year( afko~gltri ) = year( sy-datum )
        group by afko~gltri. 
    The above is my sql clause, when I do a syntax check, it said:"Comma without preceding colon (after SELECT ?)"
    Can you tell me what's wrong with this sql clause?
    Thank you very much!

    Hi,
    Select Bgltri sum( Awemng ) <b>as yqty</b> (????)
    into ( d_gltri , d_wemng )
    from afpo as A inner join afko as B
    on Aaufnr = Baufnr 
    where A~matnr = wa_pir-matnr
    and year( B~gltri ) = year( sy-datum )
    group by B~gltri.
    ENDSELECT.
    eg<b>:... INTO (f1, ..., fn</b>)
    Places the result set in the target area (f1, ..., fn). The fields of the result set are transported to the target fields fi from left to right. INTO (f1, ..., fn) is allowed only if a list with n elements is also specified in the SELECT clause.
    <b>If the result of a selection is a table, the data is retrieved in a processing loop introduced by SELECT and concluded by ENDSELECT. The processing passes through the loop once for each line read. If the result is a single record, the closing ENDSELECT is omitted.</b>
    Example
    Output a list of all airlines (with short description and name):
    TABLES SCARR.
    DATA:  CARRID   LIKE SCARR-CARRID,
           CARRNAME LIKE SCARR-CARRNAME,
    SELECT CARRID CARRNAME
           INTO (CARRID, CARRNAME)
           FROM SCARR.
      WRITE: / CARRID, CARRNAME.
    ENDSELECT
    Thanks & Regards,
    Judith.

  • How to pass an array to a procedure & how to use array in IN clause in SQL

    Hi all,
    how do i pass an array of varchar2[10] in an procedure and i want to use this array in the IN caluse of the SQL statement inside the procedure. Can anyone please help me on this.
    Thanks & regards
    shyam~

    There are multiple ways. For example:
    SQL> create or replace
      2    type str10_tbl_type is table of varchar2(10)
      3  /
    Type created.
    SQL> -- Using TABLE operator
    SQL> create or replace
      2    procedure p1(
      3                 p_str10_tbl str10_tbl_type
      4                )
      5      is
      6      begin
      7          for rec in (
      8                      select  ename,
      9                              sal
    10                        from  emp,
    11                              table(p_str10_tbl)
    12                        where ename = column_value
    13                     ) loop
    14            dbms_output.put_line(rpad(rec.ename,10) || rec.sal);
    15          end loop;
    16  end;
    17  /
    Procedure created.
    SQL> set serveroutput on format wrapped
    SQL> exec p1(str10_tbl_type('KING','ALLEN','SMITH'));
    KING      5000
    ALLEN     1600
    SMITH     800
    PL/SQL procedure successfully completed.
    SQL> -- Using MEMBER OF method
    SQL> create or replace
      2    procedure p1(
      3                 p_str10_tbl str10_tbl_type
      4                )
      5      is
      6      begin
      7          for rec in (
      8                      select  ename,
      9                              sal
    10                        from  emp
    11                        where ename member of p_str10_tbl
    12                     ) loop
    13            dbms_output.put_line(rpad(rec.ename,10) || rec.sal);
    14          end loop;
    15  end;
    16  /
    Procedure created.
    SQL> set serveroutput on format wrapped
    SQL> exec p1(str10_tbl_type('KING','ALLEN','SMITH'));
    SMITH     800
    ALLEN     1600
    KING      5000
    PL/SQL procedure successfully completed.
    SQL> SY.

  • Array in Where Clause

    Hi,
    I am having a function with an IN paramter as an array.
    How do i use all the values in this array in the Where clause?
    Function ( tArrayOfNos IN tArrType )
    open Tstcursor FOR
    select     ...
    from     ...
    where tNo in <all the nos in the array tArrayOfNos >
    thanks for your help..

    >
    If i define the type inside my package and try to use the Member Of in a function, it doesn't work..
    >
    In the examples above you will need to have a type declared in the database, however you can create a pipelined function... something like this,
    SQL> CREATE OR REPLACE Package My_Types Is
      2 
      3     Type enames_tab Is Table Of Varchar2(50);
      4 
      5  End My_Types;
      6  /
    Package created
    SQL> CREATE OR REPLACE Function lookup_ename Return my_types.enames_tab
      2     Pipelined Is
      3     v_row   my_types.enames_tab;
      4     cur     Sys_Refcursor;
      5     v_ename Varchar2(50);
      6  Begin
      7     v_row := my_types.enames_tab();
      8     Open cur For
      9        SELECT ename
    10          FROM emp
    11         WHERE ename IN ('SMITH', 'JAMES', 'WARD');
    12     Loop
    13        Fetch cur
    14           INTO v_ename;
    15        Exit When cur%Notfound;
    16        v_row.Extend;
    17        v_row(v_row.Count) := v_ename;
    18        Pipe Row(v_row(v_row.Count));
    19     End Loop;
    20     Return;
    21  End;
    22  /
    Function created
    SQL> Set Serveroutput on;
    SQL> Declare
      2     v_tab my_types.enames_tab;
      3  Begin
      4     SELECT ename Bulk Collect
      5       INTO v_tab
      6       FROM emp
      7      WHERE ename Member Of lookup_ename;
      8 
      9     For i IN v_tab.First .. v_tab.Last Loop
    10        dbms_output.put_line(v_tab(I));
    11     End Loop;
    12  End;
    13  /
    SMITH
    WARD
    JAMES
    PL/SQL procedure successfully completed

  • How can I get the data array from SQL Server Database?

    Hi,
    I can write a data array(2D)into a table of my SQL Server Database. The data array was writen to a column with image type. I know a data array is transformed a binary string when writing into database, but I dont know how to get the data array when I fetch the binary string from database.
    My question is:
    How to transform the binary string into data array? which vi's should I use? I have tried unflatten from string but failed.
    Any response is appriciated.
    Red

    happyxh0518 wrote:
    > I can write a data array(2D)into a table of my SQL Server Database.
    > The data array was writen to a column with image type. I know a data
    > array is transformed a binary string when writing into database, but I
    > dont know how to get the data array when I fetch the binary string
    > from database.
    >
    > My question is:
    > How to transform the binary string into data array? which vi's should
    > I use? I have tried unflatten from string but failed.
    In order to use Unflatten from string you first need to Flatten it
    before writing it. Also depending on the database driver, the returned
    data may actually not be binary but Hexadecimal encoded ASCII which you
    would first have to decode to binray.
    Rolf Kalbermatter
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Using a array in SQL in

    Hello experts,
    I got a procedure that accepts a list of clients. From that list I need to build a query that looks like this
    select *
      from customers
    where customer_id in (i_customer_list);Where i_customer_list is the input parameter of a procedure that is a nested table type. What would be the best approach on handling this type of situation?
    Best regards,
    Igor

    Igor S. wrote:
    What would be the best approach on handling this type of situation?Depends on the nature of the situation.
    If, for example, the same sets of lists are commonly submitted by clients, then that should be addressed via normalisation. A relation looking something as follows:
    +GROUPS = ( group_id, group_name, ... )+
    +CUSTOMER_GROUPS = ( group_ip, customer_id )+
    The client then submits a group identifier instead of a list of customer identifiers - and the SQL does a join or exists in the customer group relation in order to identify the relevant customers.
    If, for example, the lists are fairly random and large per client session, but re-used by the client session, then a GTT (global temp table) can be considered. This allows the client session to submit its large list of customer identifiers once, and storing that in a GTT. Where SQLs can then use, and re-use, this table via a join or exists.
    What does NOT make sense is the client session submitting a string, containing a comma delimited list of customer identifiers. Software engineering principles say that this approach is wrong.
    Structured data and structured programming are sides of the same coin, that says well designed, consistent, and robust software. Sending structured data (such as a customer id array) as a string is, plain and simple, wrong.

  • Using arrays in sql statement

    Hello,
    I would like to use integer array( say..int count[] = new int[3];) on my sql statement to retrieve some values. Is there a way to use int array variable in sql statement?. If yes, how should I approach doing that?.
    Thank You in Advance.
    Regards,
    Pinal.

    I'm going to be honest, I'm not so sure there is such a thing in standard SQL syntax so it would depend upon the database you were using as to whether this option was available as part of the SQL language.
    My suggestion would be to cheat, naughty I know:String arrayString = "";
    for (int i = 0; i < arrayInt.size(); i++) {
      arrayString += "**" + arrayInt;
    arrayString = arrayString.substring(2, arrayString.length());Then just parse arrayString in to an SQL VARCHAR or TEXT field.
    Obviously when you return it just use StringTokenizer to split the string up using your deliminator (in this case **) and then convert the values back into an int array.
    I'm not sure how efficient that code would be but it should do the job.

  • How to use Associative Array in sql query?

    Hello,
    I have a problem on using Associative Array variable on query; and my query is similar to the one below;
    TYPE OTHERGENERICS IS TABLE OF NUMBER(10) INDEX BY BINARY_INTEGER;
    othersGenerics OTHERGENERICS;
    CURSOR cursor_othersGenerics IS
    select master.GENERICCODEID
    from ASMTRG_ARTICLEMASTER master
    join ASMTRG_ARTICLEMAP map on MAP.ARTICLECODEID = MASTER.ID
    group by MASTER.GENERICCODEID
    minus
    select FGG.GENERICCODEID
    from asmtrg_icfocusgroup fg
    join asmtrg_icfocusgrpchannel fgc on FGC.GROUPID = FG.ID and fgc.isactive=1
    join asmtrg_icfocusgengroup fgg on FGG.GROUPID = FG.ID and FGg.ISACTIVE=1
    where fgc.channelid=1 and fg.isactive = 1
    group by FGG.GENERICCODEID;
    BEGIN
    OPEN cursor_othersGenerics;
    FETCH cursor_othersGenerics BULK COLLECT INTO othersGenerics;
    CLOSE cursor_othersGenerics;
    SELECT icfrd.*,
    CASE
    WHEN EXISTS(select ta.genericcodeid from <???XXX???> ta where ta.genericcodeid = icfgrp.genericcodeid) THEN -1
    ELSE icfrd.icfgroupid
    END CLASSIFICATION
    FROM ASMTRGVIW_ICFOCUSREPORTDATA icfrd
    LEFT JOIN ASMTRG_ICFOCUSGROUP icfgrp on icfrd.ICFGROUPID = icfgrp.ID
    WHERE (channelId IS NULL OR icfrd.CHANNELID = channelId)
    AND (asmCodeId IS NULL OR icfrd.ASMCODEID = asmCodeId)
    AND (yearId IS NULL OR icfrd.YEARID = yearId)
    AND (monthId IS NULL OR icfrd.MONTHID = monthId)
    END;
    By the way this is a part of my function.
    The "othersGenerics" is my associative array variable and <???XXX???> is the place where I need to use my "othersGenerics" array to check. So far I've tried
    "select ta.genericcodeid from table(cast(otherGenerics as OTHERGENERICS)) ta where ta.genericcodeid = icfgrp.genericcodeid",
    "select ta.genericcodeid from table(otherGenerics) ta where ta.genericcodeid = icfgrp.genericcodeid",
    "select ta.genericcodeid from otherGenerics ta where ta.genericcodeid = icfgrp.genericcodeid"
    and these are not working.
    What is your suggestions?

    Your type will have to be created as an independent object in your schema. So CREATE TYPE cannot be in your function declaration, it has to be outside it. (And then the line inside your declaration that defines the type will have to be removed.)
    But now I can see that you use this array as a kind of "temporary lookup table" - you populate the array and then use it for lookup in your select statement. An alternative way of doing this could be like this completely without arrays:
    with othergenerics as (
      select master.GENERICCODEID
      from ASMTRG_ARTICLEMASTER master
      join ASMTRG_ARTICLEMAP map on MAP.ARTICLECODEID = MASTER.ID
      group by MASTER.GENERICCODEID
      minus
      select FGG.GENERICCODEID
      from asmtrg_icfocusgroup fg
      join asmtrg_icfocusgrpchannel fgc on FGC.GROUPID = FG.ID and fgc.isactive=1
      join asmtrg_icfocusgengroup fgg on FGG.GROUPID = FG.ID and FGg.ISACTIVE=1
      where fgc.channelid=1 and fg.isactive = 1
      group by FGG.GENERICCODEID
    SELECT icfrd.*,
    CASE
    WHEN EXISTS(select ta.genericcodeid from othergenerics ta where ta.genericcodeid = icfgrp.genericcodeid) THEN -1
    ELSE icfrd.icfgroupid
    END CLASSIFICATION
    FROM ASMTRGVIW_ICFOCUSREPORTDATA icfrd
    LEFT JOIN ASMTRG_ICFOCUSGROUP icfgrp on icfrd.ICFGROUPID = icfgrp.ID
    WHERE (channelId IS NULL OR icfrd.CHANNELID = channelId)
    AND (asmCodeId IS NULL OR icfrd.ASMCODEID = asmCodeId)
    AND (yearId IS NULL OR icfrd.YEARID = yearId)
    AND (monthId IS NULL OR icfrd.MONTHID = monthId)
    ...The with clause (subquery factoring) you can think of as a kind of temp table called othergenerics created "on-the-fly".
    The optimizer may decide to actually create a temp table for you and use in the lookup, or it may decide to rewrite the query into suitable joins or nested loops or hashing - whatever the optimizer decides will be the optimal way of doing things :-)
    So unless you use your array other places in your function, I would recommend dropping the array completely, skip populating an array, and instead use a with clause for your temporary lookup.

  • Execute a procedure with a list of array in sql server 2008

    HI all,
    I have a procedure which has a list of values passed as an array . How can i execute my procedure with array list? how to implement this?Please help me.
    Thanks in advance
    Deepa

    Hi Deepa,
    basically Microsoft SQL Server does not support arrays as data types for procedures. What you can do is creating a type which represents a table definition. This type can than be used in a procedure as the following demo will show:
    The first script creates the environment which will be used for the execution
    -- 1. create the table as a type in the database
    CREATE TYPE OrderItems AS TABLE
    ItemId int PRIMARY KEY CLUSTERED
    GO
    -- 2. demo table for demonstration of results
    CREATE TABLE dbo.CustomerOrders
    Id int NOT NULL IDENTITY (1, 1) PRIMARY KEY CLUSTERED,
    CustomerId int NOT NULL,
    ItemId int
    GO
    -- 3. Insert a few records in demo table
    INSERT INTO dbo.CustomerOrders
    (CustomerId, ItemId)
    VALUES
    (1, 1),
    (2, 1),
    (3, 3),
    (1, 3);
    GO
    -- 4. Create the procedure which accepts the table variable
    CREATE PROC dbo.OrderedItemsList
    @Orders AS OrderItems READONLY
    AS
    SET NOCOUNT ON;
    SELECT o.*
    FROM dbo.CustomerOrders AS O INNER JOIN @Orders AS T_O
    ON (o.ItemId = T_O.ItemId);
    SET NOCOUNT OFF;
    GO
    The above script creates the table data type and a demo table with a few demo data. The procedure will accept the table data type as parameter. Keep in mind that table variable parameters have to be READONLY as parameter for procedures!
    The second script demonstrates the usage of the above scenario
    When the environment has been created the usage is a very simple one as you can see from the next script...
    -- 1. Fill the variable table with item ids
    DECLARE @o AS OrderItems;
    INSERT INTO @o (ItemId)
    VALUES
    (1), (3);
    -- 2. Get the list of customers who bought these items
    EXEC dbo.OrderedItemsList @Orders = @o;
    MCM - SQL Server 2008
    MCSE - SQL Server 2012
    db Berater GmbH
    SQL Server Blog (german only)

  • Joining java array with SQL table in a stored procedure

    Hey,
    I am calling a pl/sql stored procedure from a java program passing two arrays (employees) and (departments) as parameters to the procedure. Within the procedure I have stored the arrays in a table of records like this:
    type t_emp_type is record (employee_id number, department_id number);
    type t_emp_tbl_type is table of t_emp_type index by binary_integer;
    Where all elements in employees are stored in the employee_id column and departments are stored in the department_id column. So basically I've got a table like:
    l_employee_tbl t_emp_tbl_type;
    Looped through the arrays and stored the data like:
    for i in 1..p_employees.count loop
    l_employee_tbl(i).employee_id := p_employees(i);
    l_employee_tbl(i).deparment_id := p_departments(i);
    end loop;
    Now I would like to compare my l_employee_tbl with a SQL table in the database. Basically I would like to join my l_employee_tbl table with a SQL table named departments on department_id, returning all department_id:s that was not found in table departments.
    However, it is not possible to select from a user-defined table type. I have also tried to use the table() function and to cast l_employee_tbl, but found out it can't be done with records. And I would really like to use records or some other type where define my PL/SQL data. I know that you should not mix PL/SQL and SQL but in this case I think it is more efficient to try joining these "tables". Does anyone have a solution for this or advice to try something else out? It would be most appreciated.
    Edited by: 963281 on 2012-okt-04 14:25
    Edited by: 963281 on 2012-okt-05 01:53

    963281 wrote:
    I am calling a pl/sql stored procedure from a java program passing two arrays (p_employees) and (p_departments) as parameters to the procedure. Within the procedure I have stored the arrays in a table of records like this:
    type t_emp_type is record (employee_id number, department_id number);
    type t_emp_tbl_type is table of t_emp_type index by binary_integer;Why do you create an associative array?
    Now I would like to compare my l_employee_tbl with a SQL table in the database. Basically I would like to join my l_employee_tbl table with a SQL table named departments on department_id, returning all department_id:s that was not found in table departments. Of course, not possible as the SQL engine does not support PL/SQL user defined types. PL/SQL however support user defined SQL types. Which makes SQL defined types a lot more flexible.
    However, it is not possible to select from a user-defined table type. I have also tried to use the table() function and to cast l_employee_tbl, but found out it can't be done with records. Never mind SQL and PL/SQL - as a generic programming data structure principle. How do you expect being able to cast an associative array (name-value pairs) to a standard array? The two data structures are very different. So I'm puzzled in how you expect to move a non-scalar name-value pair data structure into a non-scalar value only data structure?
    And I would really like to use records or some other type where define my PL/SQL data. Why exactly? If the Java or PL/SQL data structure is populated using SQL data and database data, and wanting to use that data structure in SQL, what is the point? Why pull SQL data into a client data structure at all then - surely it is far more performant and scalable to rather keep that data in the database, and do the joins/selects/filters/etc using SQL?
    There is also the issue of scalability of local data structures in PL/SQL. The PL/SQL engine runs inside an Oracle server process, consuming private process memory on the server. The bigger the data structures used in PL/SQL, the more server memory needs to be allocated to that server process. This does not scale. Especially not if 10 or more such server processes are running the same PL/SQL code and each server needs to grab large chunks of server memory.
    If the data from Java comes from another source (e.g. keyboard, etc), and you need a means of storing this data server-side for use by PL/SQL and SQL. There are 2 basic choices. PL/SQL arrays for smallish amounts of data - and basing these arrays preferable on SQL data types allowing the array to be used by both SQL and PL/SQL engines. If the amount of data is not smallish, then it should be stored in the SQL engine (database) as that is designed for that exact purpose. And if the data is transient, then a GTT (global temp table) structure can be used (and indexed for optimal access).

  • PreparedStatement with IN sql clause

    Hi guyz,
    Need ur advice once again...
    I am using JDBC 2.0 thin sql driver.
    I want a number column in db called TICKET_NUMBER
    Here is my problem.
    String sql = "select * from TICKETS where TICKET_NUMBER in ?";
    ps = edbCon.prepareStatement(sql);
    ps.setString(1,"100,200");
    Can I do this? Its not working. So does that mean PreparedStatements doesnot support IN clause of the sqls. Help me out.
    -Ram

    Hi guyz,
    Need ur advice once again...
    I am using JDBC 2.0 thin sql driver.
    I want a number column in db called TICKET_NUMBER
    Here is my problem.
    String sql = "select * from TICKETS where
    here TICKET_NUMBER in ?";
    ps = edbCon.prepareStatement(sql);
    ps.setString(1,"100,200");
    Can I do this? Its not working. So does that mean
    PreparedStatements doesnot support IN clause of the
    sqls. Help me out.
    -RamIt will work, but you have to have: where TICKET_NUMBER IN (?,?,?). You'll have to build the last part dynamically based on the number of parameters that you have. Be carefull too, certain database implementations have a limit on the number items that you can include in the IN clause.
    You'll also have to loop through and do your parameter sets.
    Paul

  • JDBC:Count Array. SQL query works but fails in JDBC

    Hi,
    I'm using the following SQL query
    "SELECT red.id, name, count(green.id) FROM red, green WHERE area = 'northeast' AND red.id = zid GROUP BY name"
    It executes perfectly from the DB command line giving me the results.
    However when I call it from within JDBC i am getting null values.
    My JDBC call ia as follows( Where lst is the above query)
    rs = st.executeQuery(lst);
    while(rs.next()){
    nidV.addElement(rs.getString("red.id"));
    nnmV.addElement(rs.getString("name"));
    nnumV.addElement(rs.getString("count(green.id)"));
    I do realize that many folks use Integer for count queries but I pull them with as Strings all the time so that's not it.
    The one diffrence between this and my other count queries is that this one returns an array (Vector) of counts.
    Any ideas?

    the problem is probably:
    SELECT red.id, name, count(green.id) ...
    nnumV.addElement(rs.getString("count(green.id)"));you can either use an alias for the column;
    SELECT red.id, name, count(green.id) COUNT_VAR
    nnumV.addElement(rs.getObject("COUNT_VAR"));or use getObject(3) as suggested by drclap.

Maybe you are looking for