[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

re: Re: [MacPerl] Are there any SQL DBI's for Mac & NT?



>>Yes, there is full ORACLE for the Mac. Version 7 has been available for
>>some time. Yes, it is expensive. There is a generic ORACLE/Perl interface
>>called oraperl floating around somewhere on the net. The basic database
>>isn't too pricey, but the doo-dads you'll probably want to add on to create
>>a full development environment will eventually set you back around $4-5k.
>
>Can you explain what you mean with doo-dads ?

Among other things, the GUI development tools, such as Developer 2000, or
whatever Oracle is calling its object-oriented development environment
these days. What I'm implying is that ORACLE is a great database product,
but (IMHO) it is basically aimed at developers on a corporate budget. One
is buying into the whole annual service contract thing. It's really a
developer environment that is happiest when a few $k/yr is pumped into it.
If you are interested, talk to the folks at Oracle -- they have great
customer service -- and do the math on _all_ the tools. Again IMHO, the
DBMS itself is sort of a loss leader. The development tools and application
packages (e.g., Financials) are where the margin is for Oracle. Nothing
wrong with that, but you might find yourself saying, "Toto, I have a
feeling we're not in FileMaker anymore."


>Furthermore you work with Tcl to communicate with SQL*Plus
>to send SQL commands. But how about the results you get back
>from Oracle ? I would like to catch those results in a file
>or whatever. Now they are in the SQL*Plus window.
>Do you have a solution for that with Tcl (or otherwise) ?

Yes. SQL*Plus includes a SPOOL command that can be used to store query
results in a user-specified file. This command (and any other SQL or PL/SQL
commands) can be sent to SQL*Plus via Apple Events. I don't know what the
state of the world is in ORACLE 7, but in ORACLE 6 SQL*Plus supported two
Apple Events that could be used for running commands: a "Do Script" event
to send commands directly as strings, and a "Run Script" event that
specifies the pathname of a command file to be run. For example, I've been
successful at sending both "Do Script" events (dosc), and "Run Script"
events from AppleScript. For example, the following works:

tell application "SQL*Plus"
	do script "start account;"
end tell

You can also send "Run Script" events. The effect is that of loading a
command file. These are custom Oracle events of class ORCL and event ID
RNSC. For example, this works:

tell application "SQL*Plus"
	Çevent ORCLRNSCÈ alias "Pitcairn:ACCOUNT.SQL"
end tell

Note that in this case, an alias must be used, and the SQL file suffix must
be included in order to have a proper alias.

Either of these forms could be used from MacPerl, either as AppleScript
(very slow) or as Apple Events (consult the ORACLE dox for the event codes;
your mileage may vary depending on Oracle's current support for Apple
Events).

Of course, this is a rank hack. If you want to make things more
industrial-strength you can use the ORACLE Call Interface (OCI) from C or
C++. It's pretty straightforward and runtime performance is excellent,
although it's certainly more involved than parsing text in Perl! Two
architectures that come to mind are:

1) Write a custom C++ app using OCI that serves as glue and can be
controlled by Apple Events from MacPerl.

2) Extend MacPerl itself by writing externals that call OCI functions.

CodeWarrior (which is also Matthias' tool of choice for compiling MacPerl)
can be used to develop OCI applications.

My regards to the Netherlands! It's been too long since I've performed in
Amsterdam.

-Tom


________________
Tom Cloney
Under-Assistant West Coast Promotion Man
Viadoc
muse@viadoc.com  muse@csn.org Phone/Fax (508) 385-8840
World Wide Web -- http://www.viadoc.com/muse/public_html/tchome.html

Boom jacka lacka lacka, boom jacka lacka lacka...
+===============



***** Want to unsubscribe from this list?
***** Send mail with body "unsubscribe" to mac-perl-request@iis.ee.ethz.ch