I just learned,I will not able to use INTO CLAUSE
in stored procedure,while using dynamic sql.
Below is my Dynamic SQL.
SET V_SELECT = 'SELECT ' || SELECT_FIELDS || ' FROM ' || TABLE_NAME || ' WHERE ' || WHERE_CLAUSE || ' WITH UR'; EXECUTE IMMEDIATE V_SELECT;
requirement to use the procedure for multiple queries.
This is how my queries looks a like after passing values.
SELECT B.PROD_TYP, A.PROD_LINE, B.PROD_TXT, B.PROD_TXT1 FROM TABLE_A A INNER JOIN TABLE_B B ON A.ROW_ID = B.ROW_ID WHERE A.PROD_CD = HOST_VAR_PROD_CD;
I have to return the SELECT
fields.How do I return value of these fields.These fields and table and query will change.
Advertisement
Answer
I used below code and it working fine. I was able to run multiple select’s using Dynamic.
DECLARE DESC_CSR CURSOR WITH HOLD FOR V_SQL; SET V_SELECT = 'SELECT ' || SELECT_FIELDS || ' FROM ' || TABLE_NAME || ' WHERE ' || WHERE_CLAUSE || ' WITH UR'; PREPARE V_SQL FROM V_SELECT; OPEN DESC_CSR USING HOST_VAR_B; FETCH DESC_CSR INTO HOST_VAR_A;
I pass parm as below. using the where clause HOST_VAR_B as Parameter marker “?” and assigning the field at OPEN.
SELECT_FIELDS = B.COLUMN_A INTO HOST_VAR_A TABLE_NAME = TABLE_A A INNER JOIN TABLE_B B ON A.ROW_ID = B.ROW_ID WHERE_CLAUSE = A.COLUMN_B = ?