DBD-QBase
view release on metacpan or search on metacpan
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
CODE:
D_imp_sth(sth);
if (items > 1) {
/* Handle binding supplied values to placeholders */
int i, error = 0;
SV *idx;
if (items-1 != DBIc_NUM_PARAMS(imp_sth)) {
croak("execute called with %ld bind variables, %d needed",
items-1, DBIc_NUM_PARAMS(imp_sth));
XSRETURN_UNDEF;
}
idx = sv_2mortal(newSViv(0));
for(i=1; i < items ; ++i) {
sv_setiv(idx, i);
if (!dbd_bind_ph(sth, idx, ST(i), Nullsv))
++error;
}
if (error) {
XSRETURN_UNDEF; /* dbd_bind_ph already registered error */
}
}
ST(0) = dbd_st_execute(sth) ? &sv_yes : &sv_no;
void
fetch(sth)
SV * sth
CODE:
ST(0) = (SV*)dbd_st_fetch(sth);
void
fetchrow(sth)
SV * sth
PPCODE:
D_imp_sth(sth);
AV *av;
if (GIMME == G_SCALAR && DBIc_COMPAT(imp_sth)) { /* XXX Oraperl */
/* This non-standard behaviour added only to increase the */
/* performance of the oraperl emulation layer (Oraperl.pm) */
XSRETURN_IV(DBIc_NUM_FIELDS(imp_sth));
}
av = dbd_st_fetch(sth);
if (av) {
int num_fields = AvFILL(av)+1;
int i;
EXTEND(sp, num_fields);
for(i=0; i < num_fields; ++i) {
PUSHs(AvARRAY(av)[i]);
}
}
void
readblob(sth, field, offset, len, destrv=Nullsv, destoffset=0)
SV * sth
int field
long offset
long len
SV * destrv
long destoffset
CODE:
if (!destrv)
destrv = sv_2mortal(newRV(newSV(0)));
if (dbd_st_readblob(sth, field, offset, len, destrv, destoffset))
ST(0) = destrv;
else ST(0) = &sv_undef;
void
STORE(sth, keysv, valuesv)
SV * sth
SV * keysv
SV * valuesv
CODE:
ST(0) = &sv_yes;
if (!dbd_st_STORE(sth, keysv, valuesv))
if (!DBIS->set_attr(sth, keysv, valuesv))
ST(0) = &sv_no;
void
FETCH(sth, keysv)
SV * sth
SV * keysv
CODE:
SV *valuesv = dbd_st_FETCH(sth, keysv);
if (!valuesv)
valuesv = DBIS->get_attr(sth, keysv);
ST(0) = valuesv; /* dbd_st_FETCH did sv_2mortal */
void
finish(sth)
( run in 1.503 second using v1.01-cache-2.11-cpan-71847e10f99 )