DBD-Oracle
view release on metacpan or search on metacpan
are supported and which are not for Oracle 11g and interacting with a RAC
and using things like TAF, FAN, etc...
Seems this file has been neglected for quite a while so I will try to keep it up to date for now
For release 1.26 or later
Add support for TAF
Add support for New Lob Functions
Add support for Statement Cacheing
Add support for callbacks??
Drop support for ProC connections
For release 1.22 or later
--> done 1.22 Drop support for Oracle 8 and earlier
add support for $dbh->trace('SQL');
Replace OCIInitialize + OCIEnvInit, with OCIEnvCreate
/* Do actual bind */
OCIBindByName_log_stat(imp_sth, imp_sth->stmhp, &phs->bndhp, imp_sth->errhp,
(text*)phs->name, (sb4)strlen(phs->name),
phs->array_buf,
phs->maxlen,
(ub2)SQLT_STR, phs->array_indicators,
phs->array_lengths, /* ub2 *alen_ptr not needed with OCIBindDynamic */
NULL,
(ub4)phs->ora_maxarray_numentries, /* max elements that can fit in allocated array */
(ub4 *)&(phs->array_numstruct), /* (ptr to) current number of elements in array */
OCI_DEFAULT, /* OCI_DATA_AT_EXEC (bind with callbacks) or OCI_DEFAULT */
status
);
if (status != OCI_SUCCESS) {
oci_error(sth, imp_sth->errhp, status, "OCIBindByName");
return 0;
}
OCIBindArrayOfStruct_log_stat(imp_sth, phs->bndhp, imp_sth->errhp,
(unsigned)phs->maxlen, /* Skip parameter for the next data value */
(unsigned)sizeof (OCIInd), /* Skip parameter for the next indicator value */
(unsigned)sizeof(unsigned short), /* Skip parameter for the next actual length value */
/* Do actual bind */
OCIBindByName_log_stat(imp_sth, imp_sth->stmhp, &phs->bndhp, imp_sth->errhp,
(text*)phs->name, (sb4)strlen(phs->name),
phs->array_buf,
phs->maxlen,
(ub2)phs->ora_internal_type, phs->array_indicators,
phs->array_lengths,
NULL,
(ub4)phs->ora_maxarray_numentries, /* max elements that can fit in allocated array */
(ub4 *)&(phs->array_numstruct), /* (ptr to) current number of elements in array */
OCI_DEFAULT, /* OCI_DATA_AT_EXEC (bind with callbacks) or OCI_DEFAULT */
status
);
if (status != OCI_SUCCESS) {
oci_error(sth, imp_sth->errhp, status, "OCIBindByName");
return 0;
}
OCIBindArrayOfStruct_log_stat(imp_sth, phs->bndhp, imp_sth->errhp,
(unsigned)phs->maxlen, /* Skip parameter for the next data value */
(unsigned)sizeof(OCIInd), /* Skip parameter for the next indicator value */
(unsigned)sizeof(unsigned short), /* Skip parameter for the next actual length value */
#define IMP_STH_EXECUTING 0x0001
typedef struct fb_ary_st fb_ary_t; /* field buffer array */
struct fb_ary_st { /* field buffer array EXPERIMENTAL */
ub4 bufl; /* length of data buffer */
ub4 cb_bufl; /* length of piece of data fetched in callback.*/
ub4 piece_count;/*# of pieces retrieved*/
sb2 *aindp; /* null/trunc indicator variable */
ub1 *abuf; /* data buffer (points to sv data) */
ub1 *cb_abuf; /*yet another buffer for picewise callbacks this means I only need to allocate memory once a prepare rather than at each fetch*/
ub2 *arlen; /* length of returned data */
ub2 *arcode; /* field level error status */
};
typedef struct fbh_obj_st fbh_obj_t; /*Ebbedded Object Descriptor */
struct fbh_obj_st { /* embedded object or table will work recursively*/
text *type_name; /*object's name (TDO)*/
ub4 type_namel; /*length of the name*/
examples/ora_explain.pl view on Meta::CPAN
$box->Label(-text => "Password")
->grid(-column => 0, -row => 1, -sticky => "w");
$box->Entry(-textvariable => \$password, -width => 30, -show => "*")
->grid(-column => 1, -row => 1, -sticky => "w");
$box->Label(-text => "Database")
->grid(-column => 0, -row => 2, -sticky => "w");
$box->Entry(-textvariable => \$database, -width => 30)
->grid(-column => 1, -row => 2, -sticky => "w");
$box->pack(-expand => 1, -fill => "both", -ipadx => 6, -ipady => 6);
# Create the buttons & callbacks
$box = $LoginDialog->Frame(-borderwidth => 1, -relief => "raised");
my $cb = sub
{
if (! eval { login($database, $username, $password); })
{
error($parent, $@);
$LoginDialog->raise($parent);
}
else
{
examples/ora_explain.pl view on Meta::CPAN
my ($box, $schema);
# Create the entry labels & fields
$box = $SchemaDialog->Frame(-borderwidth => 1, -relief => "raised");
$box->Label(-text => "Schema")
->pack(-side => "left", -anchor => "e", -expand => 1);
$box->Entry(-textvariable => \$schema, -width => 30)
->pack(-side => "right", -anchor => "w", -expand => 1);
$box->pack(-expand => 1, -fill => "both", -ipadx => 6, -ipady => 6);
# Create the buttons & callbacks
$box = $SchemaDialog->Frame(-borderwidth => 1, -relief => "raised");
my $cb = sub
{
# Try changing to the specified schema
$schema = uc($schema);
if (! $Db->do(qq($SqlMarker alter session set current_schema = $schema)))
{
error($parent, "Cannot change schema to $schema:", $DBI::errstr);
$SchemaDialog->raise($parent);
}
examples/ora_explain.pl view on Meta::CPAN
# Munge args as necessary
$no_sys = $no_sys ? qq{and user_name not in ('SYS', 'SYSTEM')} : qq{};
$rows = -1 if ($rows !~ /^\d+$/);
$user = uc($user);
# Clear the frames
$GrabSql->delete("1.0", "end");
$GrabDetails->delete("1.0", "end");
$GrabStatus->configure(-text => "Please wait...");
# Define the callbacks for highlighting etc
my $highlight = sub
{
my ($text, $tag) = @_;
$text->tag("configure", $tag, -relief => "raised", -borderwidth => 1);
};
my $normal = sub
{
my ($text, $tag) = @_;
$text->tag("configure", $tag, -relief => "flat");
};
examples/ora_explain.pl view on Meta::CPAN
{
$GrabMain->deiconify();
$GrabMain->raise($PlanMain);
return;
}
# Otherwise, build the grab window
$GrabMain = $PlanMain->Toplevel(-title => "$ProgName - SQL cache");
$GrabMain->protocol("WM_DELETE_WINDOW", sub { $GrabMain->withdraw(); });
# Defaults & callbacks
my $ordering = "";
my $order_by = "";
my $sort_by = "";
my $no_sys = 1;
my $user = "";
my $pattern = "";
my $rows = 100;
my $grab_cb = sub
{
if (! eval { grab($ordering, $order_by, $sort_by, $no_sys,
( run in 1.733 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )