Embedded SQLs are supported, but there are a few unsupported use cases.
Unsupported use case #1
When executing a procedure in the cursor, only single result set is supported; the output parameter, return value, and multiple result sets are all unsupported.
declare lcs_test1 cursor for execute hr.synonyms_package.get_emp; open lcs_test1; fetch lcs_test1 into :ls_name; close lcs_test1;
Workaround
The code example below processes the result sets, return value and output parameter one at a time.
int li_intParam, li_retValue, li_bitResult string ls_outVarParam, ls_outNvarParam, ls_varResult, ls_ncharResult li_intParam = 1 declare lp_procName01 procedure for @li_retValue = get_muiltResultset @in_intParam = :li_intParam, @out_varParam = :ls_outVarParam output, @out_nvarParam = :ls_outNvarParam output; execute lp_procName01; //Handles the first result set fetch lp_procName01 into :ls_varResult, :ls_ncharResult, :li_bitResult; do while sqlca.sqlcode = 0 fetch lp_procName01 into :ls_varResult, :ls_ncharResult, :li_bitResult; loop //Handles the second result set fetch lp_procName01 into :ls_varResult, :ls_ncharResult; do while sqlca.sqlcode = 0 fetch lp_procName01 into :ls_varResult, :ls_ncharResult; loop //Handles the return value and output parameter fetch lp_procName01 into :li_retValue, :ls_outVarParam, :ls_outNvarParam; close lp_procName01;
Unsupported use case #2
Different transactions work on the same temp table. For example, after the first transaction is committed, the second transaction still accesses the temp table that is created in the first transaction. In this case, an "invalid object name #TEMPTABLE" error may occur.
Workaround
Make sure that all the operations related with one temp table are performed in the same transaction.
Unsupported use case #3
The embedded SQLs included in the PBD file cannot be parsed to the C# models. Refer to PBD for more information.