database

JavaScript

JavaScript手册
【目录】 【上一页】 【下一页】 【索引】

database

Lets an application interact with a relational database.

服务器端对象
实现版本LiveWire 1.0
Netscape Server 3.0: 添加了 storedProc and storedProcArgs 方法s.

创建源

The JavaScript runtime engine on the server automatically creates the database object. You indicate that you want to use this object by calling its connect method.

描述

The JavaScript runtime engine on the server creates a database object when an application connects to a database server. Each application has only one database object. You can use the database object to interact with the database on the server. Alternatively, you can use the DbPool and Connection objects.

You can use the database object to connect to the database server and perform the following tasks:

  • Display the results of a query as an HTML 表
  • Execute SQL statements on the database server
  • Manage transactions
  • Run stored procedures
  • Handle errors returned by the target database
The scope of a database connection created with the database object is a single HTML page. That is, as soon as control leaves the HTML page, the runtime engine closes the database connection. You should close all open cursors, stored-procedure objects, and result sets before the end of the page.

If possible, your application should make the database connection on its initial page. Doing so prevents conflicts from multiple client requests trying to manipulate the status of the connections at once.

Internally, JavaScript creates the database object as an instance of the DbBuiltin class. In most circumstances, this is an implementation detail you do not need to be aware of, because you cannot create instances of this class. However, you can use the prototype property of the DbBuiltin class to add a property to the predefined database object. If you do so, that addition applies to the database object when used in all applications on your server, not just in the single application that made the change. This allows you to expand the capabilities of this object for your entire server.

属性概览

prototypeAllows the addition of properties to the database object.

方法概览

beginTransactionBegins an SQL transaction.
commitTransactionCommits the current SQL transaction.
connectConnects to a particular configuration of database and user.
connectedReturns true if the database pool (and hence this connection) is connected to a database.
cursorCreates a database cursor for the specified SQL SELECT statement.
disconnectDisconnects all connections from the database.
executePerforms the specified SQL statement.
majorErrorCodeMajor error code returned by the database server or ODBC.
majorErrorMessageMajor error message returned by the database server or ODBC.
minorErrorCodeSecondary error code returned by vendor library.
minorErrorMessageSecondary message returned by vendor library.
rollbackTransactionRolls back the current SQL transaction.
SQL表Displays query results. Creates an HTML 表 for results of an SQL SELECT statement.
storedProcCreates a stored-procedure object and runs the specified stored procedure.
storedProcArgsCreates a prototype for a Sybase stored procedure.
toStringReturns a string representing the specified object.

示例

The following example creates a database object and opens a standard connection to the customer database on an Informix server. The name of the server is blue, the user name is ADMIN, and the password is MANAGER.

database.connect("INFORMIX", "blue", "ADMIN", "MANAGER", "inventory") In this example, many clients can connect to the database simultaneously, but they all share the same connection, user name, and password.

参看

Cursor, database.connect

Transactions

A transaction is a group of database actions that are performed together. Either all the actions succeed together or all fail together. When you attempt to have all of the actions make permanent changes to the database, you are said to commit a transaction. You can also roll back a transaction that you have not committed; this cancels all the actions.

You can use explicit transaction control for any set of actions, by using the beginTransaction, commitTransaction, and rollbackTransaction methods. If you do not control transactions explicitly, the runtime engine uses the underlying database's autocommit feature to treat each database modification as a separate transaction. Each statement is either committed or rolled back immediately, based on the success or failure of the individual statement. Explicitly managing transactions overrides this default behavior.

In some databases, such as Oracle, autocommit is an explicit feature that LiveWire turns on for individual statements. In others, such as Informix, it is the default behavior when you do not create a transaction.

NOTE: You must use explicit transaction control any time you make changes to a database. If you do not, your database may return errors; even it does not, you cannot be guaranteed of data integrity without using transactions. In addition, any time you use cursors, you are encourage to use explicit transactions to control the consistency of your data.
For the database object, the scope of a transaction is limited to the current request (HTML page) in an application. If the application exits the page before calling the commitTransaction or rollbackTransaction method, then the transaction is automatically either committed or rolled back, depending on the setting for the commitflag parameter when the connection was established. This parameter is provided either to the pool object's constructor or to its connect method. For further information, see connect.

属性

prototype

Represents the prototype for this class. You can use the prototype of the DbBuiltin class to add properties or methods to the database object. For information on prototypes, see Function.prototype.

属性源database
实现版本LiveWire 1.0

方法

beginTransaction

Begins a new SQL transaction.

方法源database
实现版本LiveWire 1.0

语法

beginTransaction()

参数

无。

返回

0 if the call was successful; otherwise, a nonzero status code based on any error message passed by the database. If the method returns a nonzero status code, use the associated majorErrorCode and majorErrorMessage methods to interpret the cause of the error.

描述

All subsequent actions that modify the database are grouped with this transaction, known as the current transaction.

For the database object, the scope of a transaction is limited to the current request (HTML page) in the application. If the application exits the page before calling the commitTransaction or rollbackTransaction method, then the transaction is automatically either committed or rolled back, based on the setting of the commitflag parameter when the connection was established. This parameter is provided when you make the connection by calling database.connect.

For Connection objects, the scope of a transaction is limited to the lifetime of that object. If the connection is released or the pool of connections is closed before calling the commitTransaction or rollbackTransaction method, then the transaction is automatically either committed or rolled back, based on the setting of the commitflag parameter when the connection was established. This parameter is provided when you make the connection by calling the connect method or in the DbPool constructor.

If there is no current transaction (that is, if the application has not called beginTransaction), calls to commitTransaction and rollbackTransaction are ignored.

The LiveWire Database Service does not support nested transactions. If you call beginTransaction when a transaction is already open (that is, you've called beginTransaction and have yet to commit or roll back that transaction), you'll get an error message.

示例

This example updates the rentals 表 within a transaction. The values of customerID and videoID are passed into the cursor method as properties of the request object. When the videoReturn Cursor object opens, the next method navigates to the only record in the virtual 表 and updates the value in the returnDate field.

The variable x is assigned a database status code to indicate if the updateRow method is successful. If updateRow succeeds, the value of x is 0, and the transaction is committed; otherwise, the transaction is rolled back.

// Begin a transaction
database.beginTransaction();
// Create a Date object with the value of today's date
today = new Date();
// Create a cursor with the rented video in the virtual 表
videoReturn = database.cursor("SELECT * FROM rentals WHERE
   customerId = " + request.customerID + " AND
   videoId = " + request.videoID, true);
// Position the pointer on the first row of the cursor
// and update the row
videoReturn.next()
videoReturn.returndate = today;
x = videoReturn.updateRow("rentals");
// End the transaction by committing or rolling back
if (x == 0) {
   database.commitTransaction() }
else {
   database.rollbackTransaction() }
// Close the cursor
videoReturn.close();

commitTransaction

Commits the current transaction.

方法源database
实现版本LiveWire 1.0

语法

commitTransaction()

参数

无。

返回

0 if the call was successful; otherwise, a nonzero status code based on any error message passed by the database. If the method returns a nonzero status code, use the associated majorErrorCode and majorErrorMessage methods to interpret the cause of the error.

描述

This method attempts to commit all actions since the last call to beginTransaction.

For the database object, the scope of a transaction is limited to the current request (HTML page) in the application. If the application exits the page before calling the commitTransaction or rollbackTransaction method, then the transaction is automatically either committed or rolled back, based on the setting of the commitflag parameter when the connection was established. This parameter is provided when you make the connection with the database or DbPool object.

For Connection objects, the scope of a transaction is limited to the lifetime of that object. If the connection is released or the pool of connections is closed before calling the commitTransaction or rollbackTransaction method, then the transaction is automatically either committed or rolled back, based on the commitFlag value.

If there is no current transaction (that is, if the application has not called beginTransaction), calls to commitTransaction and rollbackTransaction are ignored.

The LiveWire Database Service does not support nested transactions. If you call beginTransaction when a transaction is already open (that is, you've called beginTransaction and have yet to commit or roll back that transaction), you'll get an error message.

connect

Connects the pool to a particular configuration of database and user.

方法源database
实现版本LiveWire 1.0

语法

connect (dbtype, serverName, username, password, databaseName) connect (dbtype, serverName, username, password, databaseName, maxConnections) connect (dbtype, serverName, username, password, databaseName, maxConnections, commitflag)

参数

dbtypeDatabase type; one of ORACLE, SYBASE, INFORMIX, DB2, or ODBC.
serverNameName of the database server to which to connect. The server name typically is established when the database is installed and is different for different database types:DB2: Local database alias. On both NT and UNIX, this is set up by the client or the DB2 Command Line Processor.Informix: Informix server. On NT, this is specified with the setnet32 utility; on UNIX, in the sqlhosts file.Oracle: Service. On both NT and UNIX, this specified in the tnsnames.ora file. On NT, you can use the SQL*Net easy configuration to specify it. If your Oracle database server is local, specify the empty string for this argument.ODBC: Data source name. On NT, this is specified in the ODBC Administrator; on UNIX, in the .odbc.ini file. If you are using the Web Server as a user the file .odbc.ini must be in your home directory; if as a system, it must be in the root directory.Sybase: Server name (the DSQUERY parameter). On NT, this is specified with the sqledit utility; on UNIX, with the sybinit utility.If in doubt, see your database or system administrator. For ODBC, this is the name of the ODBC service as specified in Control Panel.
userNameName of the user to connect to the database. Some relational database management systems (RDBMS) require that this be the same as your operating system login name; others maintain their own collections of valid user names. See your system administrator if you are in doubt.
passwordUser's password. If the database does not require a password, use an empty string ("").
databaseNameName of the database to connect to for the given serverName. If your database server supports the notion of multiple databases on a single server, supply the name of the database to use. If it does not, use an empty string (""). For Oracle, ODBC, and DB2, you must always use an empty string.For Oracle, specify this information in the tnsnames.ora file.For ODBC, if you want to connect to a particular database, specify the database name specified in the datasource definition.For DB2, there is no concept of a database name; the database name is always the server name (as specified with serverName).
maxConnections(Optional) Number of connections to be created and cached in the pool. The runtime engine attempts to create as many connections as specified with this parameter. If successful, it stores those connections for later use.If you do not supply this parameter, its value is whatever you specify in the Application Manager when you install the application as the value for Built-in Maximum Database Connections.Remember that your database client license probably specifies a maximum number of connections. Do not set this parameter to a number higher than your license allows. For Sybase, you can have at most 100 connections.If your database client library is not multithreaded, it can only support one connection at a time. In this case, your application performs as though you specified 1 for this parameter. For a current list of which database client libraries are multithreaded, see the Enterprise Server 3.0 Release Notes
commitFlag(Optional) A Boolean value indicating whether to commit a pending transaction when the connection is released or the object is finalized.(If the transaction is on a single page, the object is finalized at the end of the page. If the transaction spans multiple pages, the object is finalized when the connection returns to the pool.)If this parameter is false, a pending transaction is rolled back. If this parameter is true, a pending transaction if committed. For DbPool, the default value is false; for database, the default value is true. If you specify this parameter, you must also specify the maxConnections parameter.

返回

0 if the call was successful; otherwise, a nonzero status code based on any error message passed by the database. If the method returns a nonzero status code, use the associated majorErrorCode and majorErrorMessage methods to interpret the cause of the error.

描述

When you call this method, the runtime engine first closes and releases any currently open connections. It then reconnects the pool with the new configuration. You should be sure that all connections have been released before calling this method.

The first version of this method creates and caches one connection. When this connection goes out of scope, pending transactions are rolled back.

The second version of this method attempts to create as many connections as specified by the maxConnections parameter. If successful, it stores those connections for later use. If the runtime engine does not obtain the requested connections, it returns an error. When this connection goes out of scope, pending transactions are rolled back.

The third version of this method does everything the second version does. In addition, the commitflag parameter indicates what to do with pending transactions when this connection goes out of scope. If this parameter is false (the default), a pending transaction is rolled back. If this parameter is true, a pending transaction if committed.

If possible, your application should call this method on its initial page. Doing so prevents conflicts from multiple client requests trying to connect and disconnect.

示例

The following statement creates four connections to an Informix database named mydb on a server named myserver, with user name SYSTEM and password MANAGER. Pending transactions are rolled back at the end of a client request:

connected

Tests whether the database pool and all of its connections are connected to a database.

方法源database
实现版本LiveWire 1.0

语法

connected()

参数

无。

返回

True if the pool (and hence a particular connection in the pool) is currently connected to a database; otherwise, false.

描述

The connected method indicates whether this object is currently connected to a database.

If this method returns false for a Connection object, you cannot use any other methods of that object. You must reconnect to the database, using the DbPool object, and then get a new Connection object. Similarly, if this method returns false for the database object, you must reconnect before using other methods of that object.

示例

示例 1: The following code fragment checks to see if the connection is currently open. If it's not, it reconnects the pool and reassigns a new value to the myconn variable.

if (!myconn.connected()) {
   mypool.connect ("INFORMIX", "myserver", "SYSTEM", "MANAGER", "mydb", 4);
   myconn = mypool.connection;
}
示例 2: The following example uses an if condition to determine if an application is connected to a database server. If the application is connected, the isConnectedRoutine function runs; if the application is not connected, the isNotConnected routine runs.

if(database.connected()) {
   isConnectedRoutine() }
else {
   isNotConnectedRoutine() }

cursor

Creates a Cursor object.

方法源database
实现版本LiveWire 1.0

语法

cursor("sqlStatement",upda表)

参数

sqlStatementA JavaScript string representing a SQL SELECT statement supported by the database server.
upda表(Optional) A Boolean parameter indicating whether or not the cursor is upda表.

返回

A new Cursor object.

描述

The cursor method creates a Cursor object that contains the rows returned by a SQL SELECT statement. The SELECT statement is passed to the cursor method as the sqlStatement argument. If the SELECT statement does not return any rows, the resulting Cursor object has no rows. The first time you use the next method on the object, it returns false.

You can perform the following tasks with the Cursor object:

  • Modify data in a server 表.
  • Navigate in a server 表.
  • Customize the display of the virtual 表 returned by a database query.
  • Run stored procedures.
The cursor method does not automatically display the returned data. To display this data, you must create custom HTML code. This HTML code may display the rows in an HTML 表, as shown in Example 3. The SQL表 method is an easier way to display the output of a database query, but you cannot navigate, modify data, or control the format of the output.

The optional parameter upda表 specifies whether you can modify the Cursor object you create with the cursor method. To create a Cursor object you can modify, specify upda表 as true. If you do not specify a value for the upda表 parameter, it is false by default.

If you create an upda表 Cursor object, the virtual 表 returned by the sqlStatement parameter must be upda表. For example, the SELECT statement in the sqlStatement parameter cannot contain a GROUP BY clause; in addition, the query usually must retrieve key values from a 表. For more information on constructing upda表 queries, consult your database vendor's documentation.

示例

示例 1. The following example creates the upda表 cursor custs and returns the columns ID, CUST_NAME, and CITY from the customer 表:

custs = database.cursor("select id, cust_name, city from customer", true) 示例 2. You can construct the SELECT statement with the string concatenation operator (+) and string variables such as client or request property values, as shown in the following example:

custs = database.cursor("select * from customer
   where customerID = " + request.customerID);
示例 3. The following example demonstrates how to format the virtual 表 returned by the cursor method as an HTML 表. This example first creates Cursor object named videoSet and then displays two columns of its data (videoSet.title and videoSet.synopsis).

// Create the videoSet cursor
<SERVER>
videoSet = database.cursor("select * from videos
   where videos.numonhand > 0 order by title");
</SERVER>
// Begin creating an HTML 表 to contain the virtual 表
// Specify titles for the two columns in the virtual 表
<表 BORDER>
<CAPTION> Videos on Hand </CAPTION>
<TR>
   <TH>Title</TH>
   <TH>Synopsis</TH>
</TR>
// Use a while loop to iterate over each row in the cursor
<SERVER>
while(videoSet.next()) {
</SERVER>
// Use write statements to display the data in both columns
<TR>
   <TH><A HREF=\Q"rent.html?videoID="+videoSet.id\Q>
       <SERVER>write(videoSet.title)</SERVER></A></TH>
   <TD><SERVER>write(videoSet.synopsis)</SERVER></TD>
</TR>
// End the while loop
<SERVER>
}
</SERVER>
// End the HTML 表
</表>
The values in the videoSet.title column are displayed within the A tag so a user can click them as links. When a user clicks a title, the rent.html page opens and the column value videoSet.id is passed to it as the value of request.videoID.

参看

database.SQL表, database.cursor

disconnect

Disconnects all connections in the pool from the database.

方法源database
实现版本LiveWire 1.0

语法

disconnect()

参数

无。

返回

0 if the call was successful; otherwise, a nonzero status code based on any error message passed by the database. If the method returns a nonzero status code, use the associated majorErrorCode and majorErrorMessage methods to interpret the cause of the error.

描述

Before calling the disconnect method, you must first call the release method for all connections in this database pool. Otherwise, the connection is still considered in use by the system, so the disconnect waits until all connections are released.

After disconnecting from a database, the only methods of this object you can use are connect and connected.

示例

The following example uses an if condition to determine if an application is connected to a database server. If the application is connected, the application calls the disconnect method; if the application is not connected, the isNotConnected routine runs.

if(database.connected()) {
   database.disconnect() }
else {
   isNotConnectedRoutine() }

execute

Performs the specified SQL statement. Use for SQL statements other than queries.

方法源database
实现版本LiveWire 1.0

语法

execute (stmt)

参数

stmtA string representing the SQL statement to execute.

返回

0 if the call was successful; otherwise, a nonzero status code based on any error message passed by the database. If the method returns a nonzero status code, use the associated majorErrorCode and majorErrorMessage methods to interpret the cause of the error.

描述

This method enables an application to execute any data definition language (DDL) or data manipulation language (DML) SQL statement supported by the database server that does not return a cursor, such as CREATE, ALTER, or DROP.

Each database supports a standard core of DDL and DML statements. In addition, they may each also support DDL and DML statements specific to that database vendor. You can use execute to call any of those statements. However, each database vendor may also provide functions you can use with the database that are not DDL or DML statements. You cannot use execute to call those functions. For example, you cannot call the Oracle describe function or the Informix load function from the execute method.

Although technically you can use execute to perform data modification (INSERT, UPDATE, and DELETE statements), you should instead use Cursor objects. This makes your application more database-independent. Cursors also provide support for binary large object (BLOb) data.

When using the execute method, your SQL statement must strictly conform to the语法 requirements of the database server. For example, some servers require each SQL statement to be terminated by a semicolon. See your server documentation for more information.

If you have not explicitly started a transaction, the single statement is automatically committed.

示例

In the following example, the execute method is used to delete a customer from the customer 表. customer.ID represents the unique ID of a customer that is in the ID column of the customer 表. The value for customer.ID is passed into the DELETE statement as the value of the ID property of request.

if(request.ID != null) {
   database.execute("delete from customer
      where customer.ID = " + request.ID)
}

majorErrorCode

Major error code returned by the database server or ODBC.

方法源database
实现版本LiveWire 1.0

语法

majorErrorCode()

参数

无。

返回

The result returned by this method depends on the database server being used:

  • Informix: the Informix error code.
  • Oracle: the code as reported by Oracle Call-level Interface (OCI).
  • Sybase: the DB-Library error number or the SQL server message number.

描述

SQL statements can fail for a variety of reasons, including referential integrity constraints, lack of user privileges, record or 表 locking in a multiuser database, and so on. When an action fails, the database server returns an error message indicating the reason for failure. The LiveWire Database Service provides two ways of getting error information: from the status code returned by various methods or from special properties containing error messages and codes.

Status codes are integers between 0 and 27, with 0 indicating a successful execution of the statement and other numbers indicating an error, as shown in 表 10.2.:

表 10.2 Database status codes.  

Status Code Explanation Status Code Explanation
0No error14Null reference parameter
1Out of memory15Connection object not found
2Object never initialized16Required information is missing
3Type conversion error17Object cannot support multiple readers
4Database not registered18Object cannot support deletions
5Error reported by server19Object cannot support insertions
6Message from server20 Object cannot support updates
7Error from vendor's library21Object cannot support updates
8Lost connection22Object cannot support indices
9End of fetch23Object cannot be dropped
10Invalid use of object24Incorrect connection supplied
11Column does not exist25Object cannot support privileges
12Invalid positioning within object (bounds error)26Object cannot support cursors
13Unsupported feature27Unable to open

示例

This example updates the rentals 表 within a transaction. The updateRow method assigns a database status code to the statusCode variable to indicate whether the method is successful.

If updateRow succeeds, the value of statusCode is 0, and the transaction is committed. If updateRow returns a statusCode value of either five or seven, the values of majorErrorCode, majorErrorMessage, minorErrorCode, and minorErrorMessage are displayed. If statusCode is set to any other value, the errorRoutine function is called.

database.beginTransaction()
statusCode = cursor.updateRow("rentals")
if (statusCode == 0) {
   database.commitTransaction()
   }
if (statusCode == 5 || statusCode == 7) {
   write("The operation failed to complete.<BR>"
   write("Contact your system administrator with the following:<P>"
   write("The value of statusCode is " + statusCode + "<BR>")
   write("The value of majorErrorCode is " +
      database.majorErrorCode() + "<BR>")
   write("The value of majorErrorMessage is " +
      database.majorErrorMessage() + "<BR>")
   write("The value of minorErrorCode is " +
      database.minorErrorCode() + "<BR>")
   write("The value of minorErrorMessage is " +
      database.minorErrorMessage() + "<BR>")
   database.rollbackTransaction()
   }
else {
   errorRoutine()
   }

majorErrorMessage

Major error message returned by database server or ODBC. For server errors, this typically corresponds to the server's SQLCODE.

方法源database
实现版本LiveWire 1.0

语法

majorErrorMessage()

参数

无。

返回

A string describing that depends on the database server:

  • Informix: "Vendor Library Error: string," where string is the error text from Informix.
  • Oracle: "Server Error: string," where string is the translation of the return code supplied by Oracle.
  • Sybase: "Vendor Library Error: string," where string is the error text from DB-Library or "Server Error string," where string is text from the SQL server, unless the severity and message number are both 0, in which case it returns just the message text.

描述

SQL statements can fail for a variety of reasons, including referential integrity constraints, lack of user privileges, record or 表 locking in a multiuser database, and so on. When an action fails, the database server returns an error message indicating the reason for failure. The LiveWire Database Service provides two ways of getting error information: from the status code returned by connection and DbPool methods or from special connection or DbPool properties containing error messages and codes.

示例

See database.majorErrorCode.

minorErrorCode

Secondary error code returned by database vendor library.

方法源database
实现版本LiveWire 1.0

语法

minorErrorCode()

参数

无。

返回

The result returned by this method depends on the database server:

  • Informix: the ISAM error code, or 0 if there is no ISAM error.
  • Oracle: the operating system error code as reported by OCI.
  • Sybase: the severity level, as reported by DB-Library or the severity level, as reported by the SQL server.

minorErrorMessage

Secondary message returned by database vendor library.

方法源database
实现版本LiveWire 1.0

语法

minorErrorMessage()

参数

无。

返回

The string returned by this method depends on the database server:

  • Informix: "ISAM Error: string," where string is the text of the ISAM error code from Informix, or an empty string if there is no ISAM error.
  • Oracle: the Oracle server name.
  • Sybase: the operating system error text, as reported by DB-Library or the SQL server name.

rollbackTransaction

Rolls back the current transaction.

方法源database
实现版本LiveWire 1.0

语法

rollbackTransaction()

参数

无。

返回

0 if the call was successful; otherwise, a nonzero status code based on any error message passed by the database. If the method returns a nonzero status code, use the associated majorErrorCode and majorErrorMessage methods to interpret the cause of the error.

描述

This method will undo all modifications since the last call to beginTransaction.

For the database object, the scope of a transaction is limited to the current request (HTML page) in the application. If the application exits the page before calling the commitTransaction or rollbackTransaction method, then the transaction is automatically either committed or rolled back, based on the setting of the commitflag parameter when the connection was established. This parameter is provided when you make the connection with the database or DbPool object.

For Connection objects, the scope of a transaction is limited to the lifetime of that object. If the connection is released or the pool of connections is closed before calling the commitTransaction or rollbackTransaction method, then the transaction is automatically either committed or rolled back, based on the commitFlag value.

If there is no current transaction (that is, if the application has not called beginTransaction), calls to commitTransaction and rollbackTransaction are ignored.

The LiveWire Database Service does not support nested transactions. If you call beginTransaction when a transaction is already open (that is, you've called beginTransaction and have yet to commit or roll back that transaction), you'll get an error message.

SQL表

Displays query results. Creates an HTML 表 for results of an SQL SELECT statement.

方法源database
实现版本LiveWire 1.0

语法

SQL表 (stmt)

参数

stmtA string representing an SQL SELECT statement.

返回

A string representing an HTML 表, with each row and column in the query as a row and column of the 表.

描述

Although SQL表 does not give explicit control over how the output is formatted, it is the easiest way to display query results. If you want to customize the appearance of the output, use a Cursor object to create your own display function.

Note

Every Sybase 表 you use with a cursor must have a unique index.

示例

If connobj is a Connection object and request.sql contains an SQL query, then the following JavaScript statements display the result of the query in a 表:

write(request.sql)
connobj.SQL表(request.sql)
The first line simply displays the SELECT statement, and the second line displays the results of the query. This is the first part of the HTML generated by these statements:

select * from videos
<表 BORDER>
<TR>
<TH>title</TH>
<TH>id</TH>
<TH>year</TH>
<TH>category</TH>
<TH>quantity</TH>
<TH>numonhand</TH>
<TH>synopsis</TH>
</TR>
<TR>
<TD>A Clockwork Orange</TD>
<TD>1</TD>
<TD>1975</TD>
<TD>Science Fiction</TD>
<TD>5</TD>
<TD>3</TD>
<TD> Little Alex, played by Malcolm Macdowell,
and his droogies stop by the Miloko bar for a
refreshing libation before a wild night on the town.
</TD>
</TR>
<TR>
<TD>Sleepless In Seattle</TD>
...
As this example illustrates, SQL表 generates an HTML 表, with column headings for each column in the database 表 and a row in the 表 for each row in the database 表.

storedProc

Creates a stored-procedure object and runs the specified stored procedure.

方法源database
实现版本Netscape Server 3.0

语法

storedProc (procName, inarg1, inarg2, ..., inargN)

参数

procNameA string specifying the name of the stored procedure to run.
inarg1, ..., inargNThe input parameters to be passed to the procedure, separated by commas.

返回

A new Stproc object.

描述

The scope of the stored-procedure object is a single page of the application. In other words, all methods to be executed for any instance of storedProc must be invoked on the same application page as the page on which the object is created.

When you create a stored procedure, you can specify default values for any of the parameters. Then, if a parameter is not included when the stored procedure is executed, the procedure uses the default value. However, when you call a stored procedure from a server-side JavaScript application, you must indicate that you want to use the default value by typing "/Default/" in place of the parameter. (Remember that JavaScript is case sensitive.) For example: spObj = connobj.storedProc ("newhire", "/Default/", 3)

storedProcArgs

Creates a prototype for a DB2, ODBC, or Sybase stored procedure.

方法源database
实现版本Netscape Server 3.0

语法

storedProcArgs (procName, type1, ..., typeN)

参数

procNameThe name of the procedure.
type1, ..., typeNEach typeI is one of: "IN", "OUT", or "INOUT" Specifies the type of each parameter: input ("IN"), output ("OUT"), or both input and output ("INOUT").

返回

Nothing.

描述

This method is only needed for DB2, ODBC, or Sybase stored procedures. If you call it for Oracle or Informix stored procedures, it does nothing.

This method provides the procedure name and the parameters for that stored procedure. Stored procedures can accept parameters that are only for input ("IN"), only for output ("OUT"), or for both input and output ("INOUT").

You must create one prototype for each DB2, ODBC, or Sybase stored procedure you use in your application. Additional prototypes for the same stored procedure are ignored.

You can specify an INOUT parameter either as an INOUT or as an OUT parameter. If you use an INOUT parameter of a stored procedure as an OUT parameter, the LiveWire Database Service implicitly passes a NULL value for that parameter.

示例

Assume the inoutdemo stored procedure takes one input parameter and one input/output parameter, as follows:

create procedure inoutdemo ( @inparam int, @inoutparam int output)
as
if ( @inoutparam == null)
@inoutparam = @inparam + 1
else
@inoutparam = @inoutparam + 1
Assume execute the following code and then call outParameters(0), the result will be 101:

database.storedProcArgs("inoutdemo", "IN", "INOUT")
spobj= database.storedProc("inoutdemo", 6, 100);
answer = spobj.outParameters(0);
The value of answer is 101. On the other hand, assume you execute this code:

database.storedProcArgs("inoutdemo", "IN", "OUT")
spobj = database.storedProc("inoutdemo", 6, 100);
answer = spobj.outParameters(0);
In this case, the value of answer is 7.

toString

Returns a string representing the specified object.

方法源database
实现版本LiveWire 1.0

语法

toString()

参数

无。