cancel
Showing results for 
Search instead for 
Did you mean: 

Error while calling procedure from python sqlalchemy

former_member665950
Discoverer
0 Kudos

Hi

I am getting an error when i call a stored procedure with table type input and a varchar out param from python using the sqlalchemy lib.Below mentioned is the error

Error while calling procedure from python sqlalchemy.exc.DatabaseError: (pyhdb.exceptions.DatabaseError) invalid argument: Input parameter is inadequate as table parameter:

parameter one is table type in and second is a varchar out

I am adding the code snippet which i am trying with

engine = create_engine("hana+pyhdb://{username}:{password}@{host}:{port}".format(username='username', password='password', host='hostname', port='30015'))
output="
data='[{"RULE_ID":1,"RULE_NAME":null,"SO_SSA":"1074","PO_NUMBER":null,"CODE":"DDD","ROUTE_CODE":"","OPERATING":null,"SHIP_TO":"IND","SHIP_TO_REGION":"MX","SHIP_TO_CUSTOMER_ID":null,"BILL_TO_CUSTOMER_ID":null,"END_TO_CUSTOMER_ID":null,"SLCA":"AKP123","HOLD_NAME":"Futures Approval Hold","SHIPPING_PREFERENCE":null,"EAD":null,"CUSTOMER_REQUEST_TYPE":null,"CRD":null,"CRSD":null,"CURRENT_PROMISE_DATE":null,"CURRENT_PROMISE_DELIVERY_DATE":null,"OPDATE":null,"OPDD":null,"ON_HOLD":null,"FLOW_STATUS_CODE":null,"PICK_RESULT":null,"IS_IN_OTM":null,"BUSINESS_UNIT":null,"REVENUE_FLAG":null,"ACTION_CATEGORY":null,"ACTION_OWNER":null,"SS_REVENUE":null,"CARTONS":null,"INVOICE_ELIGIBILITY_EVENT":null,"SALES_CHANNEL":null,"CREATED_BY":"NEW","CREATION_DATE":"2020-02-11 10:24PM","LAST_UPDATED_BY":"NEW","LAST_UPDATE_DATE":"2020-03-04 10:39PM","FDA_FLAG":null,"POE_FLAG":null,"CONSOLIDATED_FLAG":null,"START_DATE":"2019-01-02","END_DATE":"2020-01-02","ACTIVE":"T"}]'

test=engine.execute('call SCHEMA.PROC(?,?)',(data,output))
jerryjanda
Community Manager
Community Manager
0 Kudos

Thank you for visiting SAP Community to get answers to your questions. Since you're asking a question here for the first time, I recommend that you familiarize yourself with https://community.sap.com/resources/questions-and-answers (if you haven't already), as it provides tips for preparing questions that draw responses from our members.

Should you wish, you can revise your question by selecting Actions, then Edit (although once someone answers your question, you'll lose the ability to edit the question -- but if that happens, you can leave more details in a comment).

--Jerry

Accepted Solutions (0)

Answers (2)

Answers (2)

AndreasForster
Product and Topic Expert
Product and Topic Expert

Hi Arunkumar KP, The hana_ml library can upload a Pandas dataframe into HANA. It creates the table in the necessary format and persists the data. vitaliy.rudnytskiy shows an example in his blog https://blogs.sap.com/2020/03/11/quickly-load-covid-19-data-with-hana_ml-and-see-with-dbeaver/

The create_dataframe_from_pandas function is explained here https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.04/en-US/hana_ml.dataframe.html#hana_m...

More information on the hana_ml wrapper in the blog by christoph.morgen https://blogs.sap.com/2020/02/24/updates-for-the-data-scientist-building-sap-hana-embedded-machine-l...

Please just verify with your Account Executive, that your HANA license allows this usage.
Many Greetings Andreas

venkateswaran_k
Active Contributor
0 Kudos

Dear Arunkumar

Actually the DB procedure a table[] is expected... not the string of data.

So you may have to write something like this

DO BEGIN    

-- select values from table to fill the table
   tabledata = SELECT * from xyz;            
        
    
 test=engine.execute('call SCHEMA.PROC(?,?)',(tabledata,output))
END;