DBD-QBase
view release on metacpan or search on metacpan
void
_XXX_do(dbh, statement)
SV * dbh
char * statement
CODE:
I32 rows;
/* XXX currently implemented as execute(prepare()) in DBI.pm */
rows = dbd_db_do(dbh, statement);
if (rows == 0) { XST_mPV(0, "OK"); }
else if (rows > 0) { XST_mIV(0, rows); }
else { ST(0) = &sv_undef; }
void
commit(dbh)
SV * dbh
CODE:
ST(0) = dbd_db_commit(dbh) ? &sv_yes : &sv_no;
void
rollback(dbh)
SV * dbh
CODE:
ST(0) = dbd_db_rollback(dbh) ? &sv_yes : &sv_no;
void
STORE(dbh, keysv, valuesv)
SV * dbh
SV * keysv
SV * valuesv
CODE:
ST(0) = &sv_yes;
if (!dbd_db_STORE(dbh, keysv, valuesv))
if (!DBIS->set_attr(dbh, keysv, valuesv))
ST(0) = &sv_no;
void
FETCH(dbh, keysv)
SV * dbh
SV * keysv
CODE:
SV *valuesv = dbd_db_FETCH(dbh, keysv);
if (!valuesv)
valuesv = DBIS->get_attr(dbh, keysv);
ST(0) = valuesv; /* dbd_db_FETCH did sv_2mortal */
void
disconnect(dbh)
SV * dbh
CODE:
D_imp_dbh(dbh);
if ( !DBIc_ACTIVE(imp_dbh) ) {
if (DBIc_WARN(imp_dbh) && !dirty)
warn("disconnect: already logged off!");
XSRETURN_YES;
}
/* Check for disconnect() being called whilst refs to cursors */
/* still exists. This needs some more thought. */
/* XXX We need to track DBIc_ACTIVE children not just all children */
if (DBIc_KIDS(imp_dbh) && DBIc_WARN(imp_dbh) && !dirty) {
warn("disconnect(%s) invalidates %d associated cursor(s)",
SvPV(dbh,na), (int)DBIc_KIDS(imp_dbh));
}
ST(0) = dbd_db_disconnect(dbh) ? &sv_yes : &sv_no;
void
DESTROY(dbh)
SV * dbh
CODE:
D_imp_dbh(dbh);
ST(0) = &sv_yes;
if (!DBIc_IMPSET(imp_dbh)) { /* was never fully set up */
if (DBIc_WARN(imp_dbh) && !dirty)
warn("Database handle %s DESTROY ignored - never set up",
SvPV(dbh,na));
return;
}
if (DBIc_ACTIVE(imp_dbh)) {
if (DBIc_WARN(imp_dbh) && !dirty)
warn("Database handle destroyed without explicit disconnect");
dbd_db_disconnect(dbh);
}
dbd_db_destroy(dbh);
MODULE = DBD::QBase PACKAGE = DBD::QBase::st
void
_prepare(sth, statement, attribs=Nullsv)
SV * sth
char * statement
SV * attribs
CODE:
DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
ST(0) = dbd_st_prepare(sth, statement, attribs) ? &sv_yes : &sv_no;
void
rows(sth)
SV * sth
CODE:
XST_mIV(0, dbd_st_rows(sth));
void
bind_param(sth, param, value, attribs=Nullsv)
SV * sth
SV * param
SV * value
SV * attribs
CODE:
DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
ST(0) = dbd_bind_ph(sth, param, value, attribs) ? &sv_yes : &sv_no;
void
execute(sth, ...)
SV * sth
( run in 0.660 second using v1.01-cache-2.11-cpan-39bf76dae61 )