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 )