Win32-SqlServer

 view release on metacpan or  search on metacpan

SqlServer.xs  view on Meta::CPAN

   int    msgno
   int    state
   int    severity
   SV   * msg

void *
setupinternaldata()

void
setloginproperty(sqlsrv, prop_name, prop_value)
   SV   * sqlsrv;
   char * prop_name;
   SV   * prop_value;


int
connect(sqlsrv)
   SV * sqlsrv
  CODE:
{
    internaldata  * mydata = get_internaldata(sqlsrv);

    // Check that we are not already connected.
    if (mydata->datasrc_ptr != NULL) {
       olle_croak(sqlsrv, "Attempt to connect despite already being connected");
    }

    RETVAL = do_connect(sqlsrv, FALSE);
}
OUTPUT:
   RETVAL

void
disconnect(sqlsrv)
   SV * sqlsrv

int
isconnected(sqlsrv)
   SV * sqlsrv
  CODE:
{
   internaldata  * mydata = get_internaldata(sqlsrv);
   RETVAL = mydata->datasrc_ptr != NULL;
}
OUTPUT:
   RETVAL

void
xs_DESTROY(olle_ptr)
        SV *    olle_ptr
  CODE:
{
// This routine is called from DESTROY in the Perl code. We cannot have
// DESTROY here directly, because the Perl code has to take some extra
// precautions.
    internaldata * mydata = get_internaldata(olle_ptr);
    if (mydata != NULL) {
       disconnect(olle_ptr);

       // Free up area allocated to all properties.
       for (int i = 0; gbl_init_props[i].propset_enum != not_in_use; i++) {
          VariantClear(&mydata->init_properties[i].vValue);
       }

       // Make sure strings for SQL version and current database are
       // cleared.
       free_sqlver_currentdb(mydata);

       // And dispense of mydata itself. The Perl DESTROY will set mydata
       // to 0, to avoid a second cleanup when Perl calls DESTROY a second
       // time. (Which it does for some reason.)
       Safefree(mydata);
   }
}

void
validatecallback(olle_ptr, callbackname)
          SV * olle_ptr
          SV * callbackname
CODE:
{
    // This is a help routine to validate that a name for a message handler
    // refers to an existing sub. It's called from STORE (which is in Perl
    // code).
    char *name = SvPV_nolen(callbackname);
    CV * callback = get_cv(name, FALSE);
    if (! callback) {
        olle_croak(olle_ptr, "Can't find specified message handler '%s'", name);
    }
    // OK, we found an message handler, but was it pure luck?
    else if (PL_dowarn && ! strstr(name, "::")) {
       warn("Message handler '%s' given as a unqualified name. This could fail next time you try", name);
    }
}


int
initbatch(sqlsrv, sv_cmdtext, isnestedquery = FALSE)
    SV   *sqlsrv
    SV   *sv_cmdtext
    int  isnestedquery

int
enterparameter(sqlsrv, nameoftype, sv_maxlen, paramname, isinput, isoutput, sv_value = NULL, sv_precision = NULL, sv_scale = NULL, typeinfo = NULL)
   SV   * sqlsrv;
   SV   * nameoftype;
   SV   * sv_maxlen;
   SV   * paramname;
   int    isinput;
   int    isoutput;
   SV   * sv_value;
   SV   * sv_precision;
   SV   * sv_scale;
   SV   * typeinfo;

int
definetablecolumn(sqlsrv, tblname, colname, nameoftype, sv_maxlen = NULL, sv_precision = NULL, sv_scale = NULL, usedefault = NULL, typeinfo = NULL)
   SV * sqlsrv;
   SV * tblname;
   SV * colname;
   SV * nameoftype;



( run in 0.719 second using v1.01-cache-2.11-cpan-71847e10f99 )