MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

How do you code REXX DB2 to SET SCHEMA (Sqlcode = -104)

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> TSO and ISPF
View previous topic :: View next topic  
Author Message
RoyKMathur
Beginner


Joined: 05 Jan 2012
Posts: 47
Topics: 11

PostPosted: Tue Nov 04, 2014 9:35 am    Post subject: How do you code REXX DB2 to SET SCHEMA (Sqlcode = -104) Reply with quote

I have a REXX DB2 program where I'd need to execute a SET SCHEMA statement; however no matter what I try I get an SQLCODE = -104. The "DB2 Programming and Application Guide" (for z/OS DB2 v10) says "The following dynamic statements must be executed using EXECUTE IMMEDIATE or PREPARE and EXECUTE under DSNREXX:" and then specifies SET SCHEMA as one of them.

Does anyone have a working example of how to code this?

On a totally different subject, what happens if one doesn't properly exit the DB2 interface by not executing a DISCONNECT and/or not executing RXSUBCOM DELETE?

Here's a working extract from my test program.
Code:
/* rexx */                                                                     
    parse arg arg_ssid                                                         
                                                                               
    /*----------------------                                                   
    | enter db2 interfaces                                                     
    |-----------------------*/                                                 
    'SUBCOM DSNREXX'                                                           
    SAY 'SUBCOM DSNREXX, RC='RC                                                 
                                                                               
    IF RC THEN DO                                                               
       RC = RXSUBCOM('ADD','DSNREXX','DSNREXX')                                 
       SAY 'RXSUBCOM ADD, RC='RC                                               
    end                                                                         
                                                                               
    ADDRESS DSNREXX                                                             
    SAY 'ADDRESS DSNREXX, RC='RC                                               
                                                                               
    ADDRESS DSNREXX 'CONNECT' ARG_SSID                                         
    SAY "ADDRESS DSNREXX CONNECT "ARG_SSID", RC="RC                             
                                                                               
    "EXECSQL SET CURRENT PACKAGESET = 'DSNREXCS'"                               
    say "EXECSQL SET CURRENT PACKAGESET, rc="rc                                 
                                                                               
    /*---------------------                                                     
    | test setting schema                                                       
    |----------------------*/                                                   
    "EXECSQL EXECUTE IMMEDIATE SET CURRENT SCHEMA = 'TEST'"                     
    say 'EXECSQL EXECUTE IMMEDIATE SET CURRENT SCHEMA, rc='rc', sqlcode='sqlcode
                                                                               
    "EXECSQL SET CURRENT SCHEMA = 'TEST'"                                       
    say 'EXECSQL SET CURRENT SCHEMA, rc='rc', sqlcode='sqlcode                 
                                                                               
    INSQLDA.SQLD      =   1                                                     
    INSQLDA.1.SQLTYPE = 452        /* char */                                   
    INSQLDA.1.SQLLEN  =   4                                                     
    INSQLDA.1.SQLDATA = 'TEST'                                                 
    INSQLDA.1.SQLIND  =   0                                                     
    "EXECSQL EXECUTE IMMEDIATE SET CURRENT SCHEMA = ?"                         
    say 'EXECSQL EXECUTE IMMEDIATE SET CURRENT SCHEMA, rc='rc', sqlcode='sqlcode
                                                                               
    INSQLDA.SQLD      =   1                                                     
    INSQLDA.1.SQLTYPE = 448        /* varchar */                               
    INSQLDA.1.SQLLEN  =   4                                                     
    INSQLDA.1.SQLDATA = 'TEST'                                                 
    INSQLDA.1.SQLIND  =   0                                                     
    "EXECSQL EXECUTE IMMEDIATE SET CURRENT SCHEMA = ?"                         
    say 'EXECSQL EXECUTE IMMEDIATE SET CURRENT SCHEMA, rc='rc', sqlcode='sqlcode
                                                                               
    /*---------------------                                                     
    | exit db2 interfaces                                                       
    |----------------------*/                                                   
    ADDRESS DSNREXX "DISCONNECT"                                               
    say 'DSNREXX DISCONNECT, rc='rc                                             
                                                                               
    s_rc = RXSUBCOM('DELETE','DSNREXX','DSNREXX')                               
    say 'RXSUBCOM DELETE, rc='s_rc                                             
                                                                               
    exit 0                                                                     


Here are the results:
Code:
SUBCOM DSNREXX, RC=1                                             
RXSUBCOM ADD, RC=0                                               
ADDRESS DSNREXX, RC=0                                           
ADDRESS DSNREXX CONNECT db23, RC=0                               
EXECSQL SET CURRENT PACKAGESET, rc=0                             
EXECSQL EXECUTE IMMEDIATE SET CURRENT SCHEMA, rc=-1, sqlcode=-104
EXECSQL SET CURRENT SCHEMA, rc=-1, sqlcode=-104                 
EXECSQL EXECUTE IMMEDIATE SET CURRENT SCHEMA, rc=-1, sqlcode=-104
EXECSQL EXECUTE IMMEDIATE SET CURRENT SCHEMA, rc=-1, sqlcode=-104
DSNREXX DISCONNECT, rc=0                                         
RXSUBCOM DELETE, rc=0                                           
Back to top
View user's profile Send private message
RoyKMathur
Beginner


Joined: 05 Jan 2012
Posts: 47
Topics: 11

PostPosted: Tue Nov 04, 2014 10:06 am    Post subject: Reply with quote

I figured it out...by reading the manual more slowly and finally noticed it does not say IMMEDIATE when you use a PREPARE. I could not get it to work using EXECUTE IMMEDIATE.

This works:
Code:
sqlstmt = "SET CURRENT SCHEMA = 'DB2DVL3'"         
                                                   
outsqlda. =                               
                                                   
"EXECSQL PREPARE S1 INTO :OUTSQLDA FROM :SQLSTMT"   
say 'EXECSQL PREPARE S1, rc='rc', sqlcode='sqlcode
                                                   
"EXECSQL EXECUTE S1"                               
say 'EXECSQL S1, rc='rc', sqlcode='sqlcode       
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12377
Topics: 75
Location: San Jose

PostPosted: Tue Nov 04, 2014 11:17 am    Post subject: Reply with quote

RoyKMathur,

I thought you would have remembered this earlier topic about the same.

http://www.mvsforums.com/helpboards/viewtopic.php?t=12332&highlight=-104
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> TSO and ISPF All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group