[See all pages on this site.] [Find out more about Trifox Inc.] [Find out how to contact Trifox personnel.] [Complete product documentation, FAQs, online references.] [Pricing is simple.] [Download an evaluation copy of any Trifox product.] [Descriptions of all products, including VORTEX, DesignVision, and Genesis.]

[LOGO]
[Navigation Map]

 

[Search Site]

| 

VORTEX and Perl

It seems that when doing a SELECT of a LONG datatype in Oracle, the returned value for that column is always empty/NULL. Is this a known problem?
Please check sample3.pl in the VORTEXperl kit. This shows how to insert and retrieve Oracle LONG.

I want to develop an application (Mod Perl) to connect to an Appache server running on Solaris 2.6 to Informix 7.3, also on Solaris 2.6. Will your product do that? What do I need to purchase? Also, do I need to use the Informix connect product? If I want to connect via ODBC do I need to install the odbc drivers and Informix connect?
You need VORTEXperl on your Apache system and VORTEXserver on your Informix system. You do not need ODBC. VORTEXperl uses a socket directly to VORTEXserver on your DBMS machine.

I get an error when attempting a bulk insert into SQL Server.
The problem is that the SQL Server/Sybase bulk interface requires values for all columns. Your code is passing in only 6 values/row instead of 8. In order to get it to work, you must do:
$db->sql($c1,"insert into tblQueryDBSequence ".
"(QueryDBSequenceID,DatabaseName, ProteinSequenceID, Definition, GoldSilver, ".
"ProteinSequence, Owner,DateCreated) ".
"values (:1,:2,:3,:4,:5,:6,:7,:8)",100,8);

$c1->setIntParam($row,0,0);
$c1->setCharParam($row,1,$dbname);
$c1->setCharParam($row,2,$protein_seq_id);
$c1->setCharParam($row,3,$definition);
$c1->setCharParam($row,4,$gold_silver);
$c1->setCharParam($row,5,$protein_seq);
$c1->setCharParam($row,6,$owner);
$c1->setCharParam($row,7,"");
SQL Server will put in the correct values for the QueryDBSequenceID.

With vortex the fetch returns a non-error status (which is technically correct). I have tried to use the numOutputCols -- and it appears to return the columns even though nothing was selected -- and the endOfScan seems to only work for a return of at least 1 row.
numOutputCols will return the number of columns regardless of whether or not there are any data rows matching the query.

I would like to try an evaluation copy of VORTEXperl for connecting a client DEC Alpha (running digital unix 3.2c) to a Windows MS SQL Server. I can't build the sybase driver on the alpha as the client machine does not have a sybase installation.
You do not need the SQL server driver on Alpha. The alpha needs our VORTEXperl class libraries and the Window server needs our VORTEXserver. Both of these are available for evaluation from our web site. VORTEXperl reads/writes directly to the socket and so there is no need to rebuild it on the Alpha.

When left unused overnight, the Vortex server stops accepting connections and we must kill the resident process and restart the server. Is this a known bug? Vtxping indicates the server is "alive and kicking!" but it does not connect from Vortex Perl.
The evaluation copy times out after four hours.

Adabas D requires that LONG data types be inserted and selected through a separate function call outside the standard insert and select. We are unable to find an equivalent call in VORTEXPerl. Is there one? Also, will we have this problem in using VORTEXperl with other database systems such as Oracle, Informix, Sybase, et al? This is an extremely important issue for us.
Use the putBlob, getBlob, and setBlobParam methods to handle blobs. See sample3.pl for an example.

I am not clear on the allocation of a new cursor, and particularly when to do a cursor_close. Should I use a different cursor for each type of SQL operation I need to do? I would typically be doing things like inserting a row (using parameters, now that I figured that out, with your help) for each record I create, and possibly future programs might need to fetch a row with some information, from a different table.
If you are going to reuse the statement, then do not close the cursor. Otherwise, you can either reuse the same one for different statements or allocate new ones. You will have a slight performance improvement by using more cursors since we will not have to close it first but you may eventually use up all the ones you allocated in your dbChannel() call, the maxLogicalCursors parameter.

When my application gets to the "execute", I get this error: ./load_queries.plx: DB Error at source line 146: BULK INSERT command not allowed within multi-statement transaction. at ./load_queries.plx line 190.
More on the saga of SQL Server's ancestor, Sybase. The Sybase kernel does not allow a bulk insert within a transaction. Why? Who knows, other DBMSs do not have a problem with it although I suppose they do not want to slow down bulk processing and it is true that SQL Server/Sybase bulk operations are much faster than other DBMS's. Anyway, to solve your problem, make sure that the commit() before the bulk insert is commit(0). This will prevent the driver from starting a new transaction.

I get a syntax error if I leave off "@dbsv". What is "pathname"?
We implemented all the connect methods for Informix. Pathname is the quoted pathname to the database directory up to the parent directory of the .dbs directory. Take a look at page 1-83 of the Informix Guide to SQL: Syntax. I do not know of anyone using pathname but we implemented it just the same.

How does VORTEXserver work? I understand that it works as a daemon, so would you need to run a VORTEXserver for every single database to which you wished to connect?
VORTEXperl uses sockets to communicate with the VORTEXnet server. There is one VORTEXnet daemon that accepts the connection requests and starts up the requested DBMS server based upon the connect string passed in.

I tried to connect your Perl client to my database without success. (database and remote server are started) Is this release of the Perl module only for Vortex? Or do you have some sample scripts to connect to other databases like ADABAS?
VORTEXperl writes directly to the socket interface and thus does not need to be rebuilt on the various platforms. It communicates with VORTEXserver on the DBMS system to make the connect to ADABAS D. You must download an evaluation copy of the VORTEXserver for your particular DBMS platform.

I have my Linux machine running Perl 5.003 talking to Windows or Sparc box running Sybase. Do your products rely on the CTlib stuff?
The Perl library writes to the socket directly and does not use any vendor libraries on the client side. In fact, you do not even have to rebuild the Perl library on the client side.

Does VORTEXperl allow a web server (in this case running on Solaris) to make SQL queries to a Microsoft SQL server?
Yes.

I am writing some applications using Perl and VORTEXperl. I would like to do an update on a record, but if the record doesn't exists, then I would like to do an insert. The problem is execute() returns false when the record doesn't exists. Is it possible this is a bug? What error status do I have to check after an update so I can do an insert if it fails.
Execute() returns true to indicate an error condition. You can then call sqlError() to get the error code and message. Actually returning false is not a bug since the update did not fail, it simply did not update any rows. Call getRowsAffected() after the update. If this is 0, then no records matched the update criteria.


© 1985-2013 Updated 6 Sep 2011.