Re: Pro*C -- How to pass a value into a Dynamic SQL (Method 3).

From: Bob Withers <bwit_at_MO.NET>
Date: 25 Mar 1995 02:28:08 GMT
Message-ID: <3kvv3o$fhj_at_Twain.MO.NET>


Yih-feng Hwang (CS 688) (yhwang) wrote:
: Hi there,
 

: I got a problem about how to pass a value (NAME of table or column) into
: a dynamic SQL (method 3).
 

: The following problem is a sample.

: strcpy((char *) sqlstmt.arr,
: "SELECT distinct :col FROM :tab");
: sqlstmt.len = strlen((char *) sqlstmt.arr);
 

: ....
 

: EXEC SQL PREPARE S FROM :sqlstmt;
 

: EXEC SQL DECLARE C CURSOR FOR S;
 
: EXEC SQL OPEN C USING :col_namei, :tab_name;
 

: ....
 

: ============================================
 

: Is it possible to do this way ?
 

: (In the programmer guide, P.9-13, " However, the names of database objects such
: as tables and columns need not be specified until run time")

: Thanks in advanced,

How about:

  sqlstmt.len = sprintf((char *) sqlstmt.arr,

                       "SELECT distinct %s  FROM %s",
                        col_name, tab_name);

    ....

 EXEC SQL PREPARE S FROM :sqlstmt;

 EXEC SQL DECLARE C CURSOR FOR S;  EXEC SQL OPEN C; Received on Sat Mar 25 1995 - 03:28:08 CET

Original text of this message