Esempio n. 1
0
    static CDBVariantArray TestBatch(COdbc odbc, List <KeyValuePair <CDBColumnInfoArray, CDBVariantArray> > ra)
    {
        CDBVariantArray vPData = new CDBVariantArray();

        //first set
        vPData.Add(-1);                   //return int. output parameter value not important.
        vPData.Add(1);                    //@testid
        vPData.Add("<test_sqlserver />"); //@myxml
        vPData.Add(Guid.NewGuid());       //@tuuid
        vPData.Add(-1);                   //@myvar.
        vPData.Add(1);
        vPData.Add(2.35m);                //input/output
        vPData.Add(null);

        //second set
        vPData.Add(2);                          //return int. output parameter data type not important.
        vPData.Add(4);                          //@testid
        vPData.Add("<test_sqlserver_again />"); //@myxml
        vPData.Add(Guid.NewGuid());             //@tuuid
        vPData.Add(2);                          //@myvar.
        vPData.Add(2);
        vPData.Add(0.99m);                      //input/output
        vPData.Add(null);

        //Parameter info array can be ignored for some ODBC drivers like MySQL, MS SQL Server, etc but performance will be degraded for code simplicity
        COdbc.DRows r = (handler, rowData) =>
        {
            //rowset data come here
            int last = ra.Count - 1;
            KeyValuePair <CDBColumnInfoArray, CDBVariantArray> item = ra[last];
            item.Value.AddRange(rowData);
        };
        COdbc.DRowsetHeader rh = (handler) =>
        {
            //rowset header comes here
            KeyValuePair <CDBColumnInfoArray, CDBVariantArray> item = new KeyValuePair <CDBColumnInfoArray, CDBVariantArray>(handler.ColumnInfo, new CDBVariantArray());
            ra.Add(item);
        };
        bool ok = odbc.ExecuteBatch(tagTransactionIsolation.tiUnspecified, "select getdate();{?=call sp_TestRare1(?,?,?,?)};{call sqltestdb.dbo.sp_TestProc(?,?,?)}", vPData,
                                    er, r, rh);

        return(vPData);
    }