Chapter 1 Dynamo Tags


The Dynamo tags

This section lists the function, syntax, attributes, and examples for each Dynamo tag.

COMPONENT

Function

Use the COMPONENT tag to embed Jaguar components in HTML documents.

Syntax

For SQL access:

<!--COMPONENT ACCESS_METHOD= SQL PKG=packagename COMPONENT_NAME=componentname METHOD=methodname 

parameter(s)

-->

For ActiveX access:

<!--COMPONENT ACCESS_METHOD= ACTIVEX PKG=packagename COMPONENT_NAME=componentname METHOD=methodname HOST=hostname

parameter(s)

-->

For Java access:

<!--COMPONENT ACCESS_METHOD= JAVA PKG=packagename COMPONENT_NAME=componentname METHOD=methodname MANAGER_URL=url USERID=id PASSWORD=password NARROW_INTERFACE=narrowinterface

parameter(s)

-->

Attribute

Description

ACCESS_METHOD

Can be SQL , ACTIVEX, or JAVA . The default is SQL . Determines the access method to be used for the component.

PKG

Name of the Jaguar package. This attribute is required.

COMPONENT_NAME

Name of the Jaguar component. This attribute is required.

METHOD

Name of the component method that is being called. This attribute is required.

HOST

The host and port name to use for the component

HOST=localhost:9000

This attribute is required when using the ACTIVEX access method.

MANAGER_URL

The URL to the Jaguar manager. This attribute is optional. If an optional attribute is provided, you must provide all attributes that proceed it.

USERID

The ID for the Jaguar manager. This attribute is optional. If an optional attribute is provided then all attributes preceding it must be provided.

PASSWORD

The password for the Jaguar manager. This attribute is optional. If an optional attribute is provided then all attributes preceding it must be provided.

NARROW_INTERFACE

The name of the component to which you would like to narrow. This attribute is optional. If an optional attribute is provided then all attributes preceding it must be provided.

Description

The COMPONENT tag is used to call and manipulate Jaguar components. The same attributes associated with the SQL tag may be used with the COMPONENT tag.

The default name of the query object when using the COMPONENT tag is COMPONENT, in the same way that the default name of the query object is SQL when the SQL tag is being used.

Example

The following example calls the setMessage method of a Jaguar component. $message is equal to saying document.value.message (passes in a variable from a form in a previously accessed document):

<!--COMPONENT PKG=Demo_Components COMPONENT_NAME=SharedMsg METHOD=setMessage
$message
-->

The following example calls the getMajors method of the SVUMetaData component which is part of the SVU package included with Jaguar:

<HTML>
<!--COMPONENT PKG=SVU COMPONENT_NAME=SVUMetaData METHOD=getMajors
-->
<!--formatting NAME=COMPONENT--><TR>
<!--/formatting-->

</HTML>

The following example calls the getMajors method of the SVUEnrollment component which is part of the SVU package included with Jaguar. The access method for this example is Java. The GetValue function is used to return the appropriate datatype for each column. For more information on result sets, see the Jaguar documentation.

<!--COMPONENT ACCESS_METHOD=JAVA PKG=SVU COMPONENT_NAME=SVUEnrollment METHOD=getMajors MANAGER_URL=iiop://localhost:9000 USERID=jagadmin PASSWORD=""
-->
<!--SCRIPT
function GetValue(query, metadata, column ) {
type = metadata.getColumnType( column );
switch( type ) {
case 1: //CHAR
return query.getString( index );
case 2: //NUMERIC
case 3: //DECIMAL
return query.getBigDecimal( index, this.metadata.getScale(index) ).floatValue();
case 4: //INTEGER
return query.getInt( index );
case 5: //SMALLINT
return query.getShort( index );
case 6: //FLOAT
case 7: //REAL
return query.getFloat( index );
case 8: //DOUBLE
return query.getDouble( index );
case 12: //VARCHAR
return query.getString( index );
case 0: //NULL
return null
case 1111: //OTHER
return query.getObject( index );
case 91: //DATE
return query.getDate( index );
case 92: //TIME
return query.getTime( index );
case 93: //TIMESTAMP
return query.getTimestamp( index );
default:
if( type < 0 ) {
if( type == -1 ) { //LONGVARCHAR
return query.getString( index );
} else if( type == -2 ) { //BINARY
return query.getBytes( index );
} else if( type == -3 ) { //VARBINARY
return query.getBytes( index );
} else if( type == -4 ) { //LONGVARBINARY
return query.getBytes( index );
} else if( type == -5 ) { //BIGINT
return query.getLong( index );
} else if( type == -6 ) { //TINYINT
return query.getShort( index );
} else if( type == -7 ) { //BIT
return query.getBytes();
}
} else {
return query.getBytes( index );
}
}
document.writeln( "<H3>Testing SVUEnrollment getmajors</H3>" );
//The result of the tag is stored in the variable
//COMPONENT
prequery = COMPONENT;
//The RecordSet returned needs to fixed using a
//static method call
query = java.CallStaticMethod( "com.sybase.CORBA.jdbc11.SQL","getResultSet",prequery );
received = query.next();
i = 0;
while( received ) {
metadata = query.getMetaData();
for( j = 1; j <= 3; j++ ) {
value = GetValue( query, metadata, j );
document.writeln( value );
}
received = query.next();
i++;
}
-->

See also

"CreateComponent method"

"Calling Jaguar Component Methods from PowerDynamo" in the PowerDynamo User's Guide.

DATA

Function

The DATA tag allows an undetermined number of rows to be returned from a query.

Syntax

<!--DATA [ QUERY=queryname ] [ NAME=colname ] -->

Attribute

Description

QUERY

Allows you to specify the name of a query from which the data should be extracted. If you do not provide the QUERY attribute, the QUERY name is assumed to be "SQL".

<!--DATA QUERY = myquery-->

NAME

Allows you to specify the name of a column from which the data should be extracted. This attribute is optional. If you do not provide a NAME , sequential DATA tags will correspond to the order of the columns in the query result set.

<!--DATA NAME = city-->

Description

When you use a query in a template, and the results are to be formatted as a table or list, you do not know how many rows will be in the result set.

PowerDynamo uses data placeholders, formatted as comment tags, to describe the formatting of each row of the query result set. The DATA tag is used in conjunction with the FORMATTING tag.

The data placeholders are marked with comment tags:

<!--DATA-->

Only one row of placeholders is included within a FORMATTING statement. The application server automatically expands the placeholder to as many rows as required to hold the result set.

DATA tags must be between a FORMATTING start tag and a FORMATTING end tag.

Example

The following template fragment defines a table that holds the results of a simple query:

<TABLE BORDER>
<TR>
<TH>name</TH>
<TH>color</TH>
</TR>
<!--FORMATTING--><TR>
<TD><!--DATA--></TD>
<TD><!--DATA--></TD>
</TR><!--/FORMATTING-->
</TABLE>
</BODY>
</HTML>

See also

"FORMATTING ".

"LABEL ".

DOCUMENT

Function

The DOCUMENT tag allows you to set certain properties of the document, such as the content type, status, whether or not the request should be redirected to an alternate URL, and the duration of time, if any, the request output should be cached.

Syntax

<!--DOCUMENT [ CONTENT_TYPE = type ]

...            [ REDIRECT = URL ]

...            [ STATUS = statusCode ]

...            [ CACHED_OUTPUT_TIMEOUT = minutes ] -->

Attribute

Description

CONTENT_TYPE

The MIME type of document being returned to the browser, for example, image/gif.

<!--DOCUMENT CONTENT_TYPE="image/gif"-->

This attribute is optional.

REDIRECT

The name of the URL to which the current request should be redirected.

This attribute is optional.

STATUS

The status of a document where the first three characters represent a three-digit status code and the remaining characters contain a brief explanation of the status. For example, 204 No Response .

This attribute is optional.

CACHED_OUTPUT_
TIMEOUT

Duration of time (in minutes) for which the generated output of a script or template will be cached. This attribute is optional. The default is 0.

Example

This example caches the document output for five minutes.

<HTML>
<TITLE>doctag.stm</TITLE>
<BODY>
<H1>Customer Phone Numbers</H1>
<!--SQL
SELECT customer.fname, customer.lname, customer.phone
FROM DBA.customer customer
-->
<!--DOCUMENT CACHED_OUTPUT_TIMEOUT = "5" -->
<TABLE BORDER>
<TR>
<TH>fname</TH>
<TH>lname</TH>
<TH>phone</TH>
</TR>
<!--formatting--><TR>
<TD><!--DATA--></TD>
<TD><!--DATA--></TD>
<TD><!--DATA--></TD>
</TR><!--/formatting-->
</TABLE>
</BODY>
</HTML>

ELSE

Function

The ELSE tag allows you to manipulate script flow. If none of the preceding conditions are true, the request associated with the ELSE statement is executed.

Syntax

<!--ELSE -->

Example

This example uses the IF tag to check if a condition (YearOfBirth=1970) is true or false. If the condition is true the text "You are old enough to participate in this promotion" displays. If the condition is false, the ELSE tag is used and displays "You are not old enough to participate in this promotion."

<HTML>
<!--SCRIPT
YearOfBirth=1970;
-->
<!--IF EXPR="YearOfBirth < 1979" -->
You are old enough to participate in this promotion.
<!--ELSE-->
You are not old enough to participate in this promotion.
<!--ENDIF-->
</HTML>

ELSEIF

Function

The ELSEIF tag can be used after an IF tag to check another condition if the first condition associated with the IF tag was false.

Syntax

<!--ELSEIF EXPR = expression -->

Attribute

Description

EXPR

The expression determines whether the execution of the tag should continue or be passed over. If the expression is true, execution will continue.

Example

An example of the ELSEIF tag is as follows:

<HTML>
<!--SCRIPT
var num=22;
-->
<!--IF EXPR="num > 5" -->
<!--IF EXPR="num > 10" -->
num is greater than 10
<!--ELSEIF EXPR="num < 10"-->
num is greater than 5 and less than 10
<!--ELSE-->
num is 10
<!--ENDIF-->
<!--ENDIF-->
</HTML>

ENDIF

Function

The ENDIF tag ends the IF block.

Syntax

<!--ENDIF -->

Example

The following example has two IF blocks that end with the ENDIF tag:

<HTML>
<!--SCRIPT
var num=22;
-->
<!--IF EXPR="num > 5" -->
<!--IF EXPR="num > 10" -->
num is greater than 10
<!--ELSEIF EXPR="num < 10"-->
num is greater than 5 and less than 10
<!--ELSE-->
num is 10
<!--ENDIF-->
<!--ENDIF-->
</HTML>

EVALUATE

Function

The EVALUATE tag allows you to evaluate a DynaScript expression.

Syntax

<!--EVALUATE EXPR = expression -->

Attribute

Description

EXPR

The expression to be evaluated. This attribute is required.

Example

An example of the EVALUATE tag is as follows:

<!--EVALUATE EXPR="j + 1" -->
dollars.

If j is equal to 5, the above example would have an output of:

6 dollars

EXECUTE

Function

The EXECUTE tag allows you to execute a system command.

Syntax

<!--EXECUTE COMMAND = commandname -->

Attribute

Description

COMMAND

The name of the command to be executed. This attribute is required.

<!--EXECUTE COMMAND="mycommand"-->

Examples

This example launches notepad.exe:

<!--EXECUTE command = "notepad.exe"-->

FORMATTING

Function

Defines the output of a query.

Syntax

For HTML formatting:

<!--FORMATTING [[FORMAT_AS="HTML" ][ BORDER = borderwidth ] [ LIST = listtype ][ MAXROWS = num ] [ NAME = stmtname ] [STARTROW = rownum ][STRIP_TRAILING_BLANKS]] -->

<!--/FORMATTING -->

For XML formatting:

<!--FORMATTING [[FORMAT_AS="XML"] [RESULTSET_TAG=restultsettagname][ROW_TAG=rowtagname][COLUMN_TAG=columntagname][USE_CDATA ] [ MAXROWS = num ] [ NAME = stmtname ] [STARTROW = rownum ] [STRIP_TRAILING_BLANKS]] -->

<!--/FORMATTING -->

Attribute

Description

BORDER

The width of the table border. A value of 0 creates a table with no border. BORDER applies only if you use the default formatting, that is, nothing between the <!--FORMATTING--> and <!--/FORMATTING--> tags. If you specify both BORDER and LIST , LIST takes precedence.

LIST

Use LIST if you want the query to display in a list. LIST may be set to ORDERED , UNORDERED , or DEFINITION .

LIST only applies if you use default formatting, that is, you place nothing between the
<!--FORMATTING-->
and <!--/FORMATTING--> tags. If you specify both BORDER and LIST , LIST takes precedence.

<HTML>
<TITLE>format.stm</TITLE>
<BODY>
<H1></H1>
<!--SQL
SELECT customer.fname, customer.lname
FROM DBA.customer customer
-->
<!--FORMATTING LIST=ORDERED-->
<!--/FORMATTING-->
</BODY>
</HTML>

MAXROWS

The maximum number of times the content between the start and end tag is to be repeated. This attribute is optional.

Normally, the formatting tag causes the content between the <!--FORMATTING--> and the <!--/FORMATTING--> tag to be repeated for each row in a query result. The addition of the MAXROWS attribute causes the content between the start and end tag to be repeated at most MAXROWS times.

NAME

The name of the SQL statement to be formatted. If the NAME attribute is not provided, the name "SQL" is assumed.

If you have more than one SQL statement in a template, you can ensure that your formatting statements refer to the correct SQL statement by referencing the name of the SQL statement in a FORMATTING tag attribute. For example, this statement formats the results of the SQL statement ProductQuery:

<!--FORMATTING NAME=ProductQuery-->

STARTROW

Indicates the row of the result set to begin from when displaying. Set STARTROW to an integer greater than or equal to 0.

<!--FORMATTING STARTROW=4 BORDER=2 -->

FORMAT_AS

May be set to HTML (the default) or XML. If set to XML, the additional tags RESULTSET_TAG , ROW_TAG and COLUMN_TAG can be used to generate XML output. The BORDER and LIST attributes do not apply.

The attributes NAME , MAXROWS, and STARTROW apply for both XML and HTML.

RESULTSET_TAG

Sets the tag surrounding the result set. If no RESULTSET_TAG is specified, the default tag SYBRESULTSET will be used.

This attribute applies only when FORMAT_AS=XML

ROW_TAG

Specifies the tags to be used to define a table row. If no ROW_TAG is specified, the default tag of SYBROW will be used.

This attribute applies only when FORMAT_AS=XML

COLUMN_TAG

Specifies the tags to be used to define a table column. If no COLUMN_TAG is specified, the column's label will be used.

This attribute applies only when FORMAT_AS=XML

USE_CDATA

Instructs Dynamo to encode characters using CDATA to escape special XML characters. If you do not specify USE_CDATA, characters are encoded with the normal ampersand method.

This attribute applies only when FORMAT_AS=XML

STRIP_TRAILING_BLANKS

Strips trailing blanks from query data. By default, this attribute is not used. This attribute is useful when used with output generated from Adaptive Server Enterprise or other databases that have trailing blank characters.

Description

When you use a query in a template, and want the results to be formatted as a table or list, you do not know ahead of time how many rows are going to be in the result set.

PowerDynamo uses data placeholders to describe the formatting of each row of the query result set.

Note  

Formatting using scripts
You can also use embedded scripts to format output. The flexibility of scripts allows more varied formatting than the formatting tags.

For more information, see "The DynaScript Language".

The HTML tags for formatting instructions are slightly different from the tags used for SQL statements. To allow an HTML editor to modify and refine the actual formatting, the formatting description is not inside a comment. Instead, comment tags are used for placeholders for the data, which are replaced on processing by the actual data.

All data placeholders must be between formatting start and end comment tags. The start tag is:

<!--FORMATTING-->

The end tag is:

<!--/FORMATTING-->

There is no restriction on the HTML code that can be included between the tags. The formatting comment tags have no effect on HTML that occurs between them; they affect only the embedded instructions.

Examples

This example defines a table that holds the results of a simple query:

<TABLE BORDER>
<TR>
<TH>name</TH>
<TH>color</TH>
</TR>
<!--FORMATTING--><TR>
<TD><!--DATA--></TD>
<TD><!--DATA--></TD>
</TR><!--/FORMATTING-->
</TABLE>

This example performs a query on a product table with more than 100 product codes. Using the MAXROWS attribute results in only the first 3 product codes being returned.

<!--SQL
select code from productlist
-->
<!--FORMATTING MAXROWS=3-->
Product code: <!--DATA-->
<!--/FORMATTING -->

has the output of:

Product code: 111
Product code: 222
Product code: 333

You can nest the FORMATTING tag inside other FORMATTING tags. For example, this fragment:

<!--FORMATTING NAME=Query1-->
<!--FORMATTING NAME=Query2-->
<!--DATA QUERY=Query1--><!--DATA-->
<!--/FORMATTING-->
<!--/FORMATTING-->

Would have an output similar to:

Fred    26
Fred 32
Fred 27
Fred 34
Jane 26
Jane 32
Jane 27
Jane 34

If you do not specify a QUERY attribute on the DATA tag, the query specified on the innermost <!--FORMATTING--> block is assumed.

Using nested FORMATTING statements on databases that do not support backward cursor movement causes a performance degradation. Sybase strongly recommends that you not nest FORMATTING sections unless absolutely necessary.

You may also reference a query that is outside of the formatting block. For example:

<!--formatting NAME=Query1-->
<!--data QUERY=Query3 NAME=title--><!--DATA-->
<!--/formatting-->

This example uses the FORMAT_AS=XML tag to create the output in XML.


<!--SQL
select product.description, product.color
from product
order by product.description
-->
<!--FORMATTING FORMAT_AS="XML" RESULTSET_TAG="MYRESULTSET" ROW_TAG="MYROW"
COLUMN_TAG="MYDESCRIPTION MYCOLOR"-->
<!--/FORMATTING-->

The output would look like this:

<MYRESULTSET> 
<MYROW><MYDESCRIPTION>Cloth Visor</MYDESCRIPTION><MYCOLOR>White</MYCOLOR></MYROW>
<MYROW><MYDESCRIPTION>Cotton Cap</MYDESCRIPTION><MYCOLOR>Black</MYCOLOR></MYROW>
<MYROW><MYDESCRIPTION>Cotton
Shorts</MYDESCRIPTION><MYCOLOR>Black</MYCOLOR></MYROW>
<MYROW><MYDESCRIPTION>Crew Neck</MYDESCRIPTION><MYCOLOR>Black</MYCOLOR></MYROW>
<MYROW><MYDESCRIPTION>Hooded
Sweatshirt</MYDESCRIPTION><MYCOLOR>Green</MYCOLOR></MYROW>
<MYROW><MYDESCRIPTION>Plastic Visor</MYDESCRIPTION><MYCOLOR>Black</MYCOLOR></MYROW>
<MYROW><MYDESCRIPTION>Tank Top</MYDESCRIPTION><MYCOLOR>White</MYCOLOR></MYROW>
<MYROW><MYDESCRIPTION>V-neck</MYDESCRIPTION><MYCOLOR>Orange</MYCOLOR></MYROW>
<MYROW><MYDESCRIPTION>Wool cap</MYDESCRIPTION><MYCOLOR>White</MYCOLOR></MYROW>
<MYROW><MYDESCRIPTION>Zipped
Sweatshirt</MYDESCRIPTION><MYCOLOR>Blue</MYCOLOR></MYROW>
</MYRESULTSET>

See also

"DATA ".

"LABEL ".

IF

Function

The ID tag allows for manipulation of script flow. If the condition associated with the tag is true the text associated with the IF tag will be executed.

Syntax

<!--IF EXPR=expression -->

<!--ENDIF -->

Attribute

Description

EXPR

The expression that determines whether the execution of the tag should continue or be passed over. If the expression is true, execution will continue.

Example

This example uses the IF tag to check if a condition (YearOfBirth < 1979) is true or false. If the condition is true the text "You are old enough to participate in this promotion" displays. If the condition is false, the else statement is used and displays "You are not old enough to participate in this promotion."

<HTML>
<!--SCRIPT
YearOfBirth=1970;
-->
<!--IF EXPR="YearOfBirth < 1979" -->
You are old enough to participate in this promotion.
<!--ELSE-->
You are not old enough to participate in this promotion.
<!--ENDIF-->
</HTML>

INCLUDE

Function

Use the INCLUDE tag to include the generated output of another document. The specified path may be a relative or an absolute path or the tilde (~) character may be used.

For information on using the tilde character see "Paths".

Syntax

<!--INCLUDE NAME = filename -->

Argument

Description

NAME

Name of the document that is to have its output included in the output of the current document.

Example


LABEL

Function

The LABEL tag allows you to return the column name or column alias (as specified in the SQL query) for the colNum column.

Syntax

<!--LABEL [ NAME = queryname ][ INDEX = columnindex ] -->

Attribute

Description

NAME

The name of the query. If you do not specify NAME , the name "SQL" is assumed.

INDEX

The column index. This attribute is optional.

Description

You can use the LABEL tag alone or from within a formatting section. When you use it within a formatting section for a query, each subsequent occurrence of the LABEL tag increases the value of INDEX by one.

Example

The following lines:

<!--SQL
select name, color, size from product
-->

<!--FORMATTING-->
<!--LABEL-->: <!--DATA-->
<!--LABEL-->: <!--DATA-->
<!--LABEL-->: <!--DATA-->
<!--/FORMATTING-->

produce the following output:

name: Tee Shirt
color: White
size: Small

name: Tee Shirt
color: Orange
size: Medium

name: Tee Shirt
color: Black
size: One size fits all

See also

"FORMATTING "

"DATA "

MAILPIECE

Function

Use the MAILPIECE tag to send mail through a SMTP host.

Syntax

<!--MAILPIECE TO = recipientAddress [ FROM = fromAddress ] [ SUBJECT = subject ] [ SMTPHOST = SMTPAddress ]  -->

Body of the mail piece

<!--/MAILPIECE -->

Attribute

Description

TO

The address of the recipient of the mail piece. This attribute is required.

FROM

The address of the person sending the mail piece. This attribute is optional.

SUBJECT

The subject of the mail piece. This attribute is optional.

SMTPHOST

The SMTP host of the mail piece. This attribute is optional. If not specified here, the SMTP host must be set from the Default General Settings folder in Sybase Central.

INDEX

The column index. This attribute is optional.

Description

Use the MAILPIECE tag to send mail from PowerDynamo using Dynamo tags and a SMTP host. Enter the body of the mail piece between the start and end mail piece tag. If you do not specify an SMTP host within the script, the default SMTP host specified in Sybase Central is used. If you have not specified an SMTP host in either of these places, an error occurs.

Example

This example sends a mail piece with a subject and body. The SMTP host has been set in Sybase Central:

<HTML>
<!--MAILPIECE TO="elmo@sybase.com" FROM="fred@sybase.com" SUBJECT="My mail piece subject"-->
This is the body of the mail piece.
<!--/MAILPIECE-->
</HTML>

SCRIPT

Function

Use the SCRIPT tag to embed DynaScript in HTML documents.

Syntax

<!--SCRIPT

    DynaScript code

-->

Description

All DynaScript scripts begin and end with a SCRIPT tag (<!--SCRIPT --> ).

All information within a SCRIPT tag is invisible to any Web editing tool-in other words, it is processed by the Dynamo application server.

Example

For more information, see "The DynaScript Language".

SQL

Function

Use the SQL tag to embed SQL statements are embedded in HTML documents.

Syntax

<!--SQL [ NAME = queryname ]

...            [ CONNECTION_NAME = conname

...            | CONNECTION_OBJECT = objname

...            | DSN = datasource UID = userid- PWD = password

...            | SERVER = servername DBN = databasename UID = userid PWD = password ]

...            [ NO_EXECUTE = queryname ]

            [ NO_SQL_ERROR ]

    SQL query

-->

Attribute

Description

NAME

Name of a query. This attribute is optional. If you do not use NAME then the name "SQL" is assumed.

CONNECTION_NAME

Name of the connection that the SQL query is to use. This attribute is optional.

By default, SQL queries use the connection name associated with the document in which they are contained. The CONNECTION_NAME attribute enables you to explicitly specify the connection name that you would like a SQL query to use. The SQL CONNECTION_NAME tag is used as follows:

<!--SQL CONNECTION_NAME="MyConnection"
select * from product
-->

The Connections folder of Sybase Central contains a list of PowerDynamo connection names.

CONNECTION_OBJECT

Name of the DynaScript connection object that the SQL query is to use. This attribute is optional:

<!--SQL CONNECTION_OBJECT=connObj
select * from product
-->

NO_EXECUTE

Allows you to prepare a query without executing it.

<!--SQL NAME=myQuery NO_EXECUTE
select * from product
-->

To execute the query you would do something like:

<!--SCRIPT
myQuery.Execute();
-->

DSN, UID, PWD

The data source name that you would like a SQL query to use. Using a data source name to connect to a database bypasses both connections and connection objects. No connection names are created or used. The user ID and password are optional. For example:

<--SQL DSN="PowerDynamo Demo" UID=dba PWD=sql
select * from product
-->

SERVER, DBN*, UID, PWD

The server name on which the SQL query should be executed. The connection made to the server will be an Open Client connection.

The SERVER,DBN, UID, PWD attributes are used as follows:

<!--SQL SERVER="myserver" DBN="mydatabase" UID=dba PWD=sql
select * from product
-->

Using a server name to connect to a database bypasses both connections and connection objects. No connection names are created or used.

*DBN is optional. If you do not specify a database name, the connection uses the user's default database.

NO_SQL_ERROR

Executes a script even if an error is encountered. No error is displayed in the output. To display any resulting errors, use the SQL_ON_ERROR tag.

Note  

Only one connection
You can use only one of: CONNECTION_NAME , CONNECTION_OBJECT, DSN, or SERVER .

Description

Use SQL queries to access and manipulate data that has been stored in a database.

Example

This example has a SQL query embedded in HTML.

<HTML>
<TITLE>sample.stm</TITLE>
<BODY>
<H1>DynaScript Sample</H1>
<!--SQL
SELECT Book.Title, Book.BookID, Book.Price
FROM DBA.Book Book
-->
</BODY>
</HTML>

SQL_INSERT

Function

Performs an insert operation using the document's parameters.

Syntax

<!--SQL_INSERT TABLE= tableName [ NAME = queryname ]

...            [ CONNECTION_NAME = conname

...            | CONNECTION_OBJECT = objname

...            | DSN = datasource UID = userid- PWD = password

...            | SERVER = servername DBN = databasename UID = userid PWD = password ]

...            [ NO_EXECUTE = queryname ]

            [ NO_SQL_ERROR ]

    -->

Attribute

Description

TABLE

Name of the table that the data is to be inserted in. This attribute is required.

NAME

Name of a SQL query. This attribute is optional. If no NAME is provided then the name "SQL" is assumed.

CONNECTION_NAME

Name of the connection that the SQL query is to use. This attribute is optional.

By default, SQL inserts use the connection name associated with the document in which they are contained. The CONNECTION_NAME attribute enables you to explicitly specify the connection name that you would like a SQL insert to use. For example:

<!--SQL_INSERT CONNECTION_NAME="MyConnection" TABLE="product" -->

You can find a list of PowerDynamo connection in the Connections folder of Sybase Central.

CONNECTION_OBJECT

Name of the DynaScript connection object that the SQL query is to use. This attribute is optional.

DSN, UID, PWD

The data source name that you would like a SQL query to use. Using a data source name to connect to a database bypasses both connections and connection objects. No connection names are created or used.The user ID and password are optional. For example:

<!--SQL_INSERT DSN="PowerDynamo Demo" UID=dba PWD=sql TABLE="product"-->

SERVER, DBN*, UID, PWD

The server name on which the SQL query should be executed. Using a server name to connect to a database bypasses both connections and connection objects. No connection names are created or used. The connection made to the server will be an Open Client connection.

The SERVER, DBN, UID, PWD attributes are used as follows:

<!--SQL SERVER="myserver" DBN="mydatabase" UID=dba PWD=sql TABLE="product"-->

*DBN is optional. If you do not specify a database name, the connection uses the user's default database.

NO_EXECUTE

Allows you to prepare a SQL query without executing it.

<!--SQL_INSERT NAME=myQuery NO_EXECUTE
TABLE="product"-->

To execute the query you would do something like:

<!--SCRIPT
myQuery.Execute();
-->

NO_SQL_ERROR

Causes a script to execute even if an error is encountered. No error is displayed in the output. To display errors, use the SQL_ON_ERROR tag.

Note  

Only one connection
You can use only one of: CONNECTION_NAME , CONNECTION_OBJECT, DSN , or SERVER .

Description

Use SQL_INSERT to enter data into a table. For example, lets's say you have created a form that asks a user to enter the information to add to the table. If the names on the form match the names of the table columns, you can insert the information into the table by calling a simple script that includes:

<!--SQL_INSERT TABLE="tablename"-->

Example

The following template allows a user to add a new product to the database. The first document (newProduct.stm) collects the information and passes it to the second document (insert.ssc) for insertion.

<HTML>
<TITLE>newProduct.stm</TITLE>
<BODY>
<H1>New Product</H1>
<P>Enter the following information</P>
<FORM METHOD=POST ACTION="insert.ssc">
<OL>
<LI><INPUT TYPE="text" NAME="id" >ID of the product<BR>
<LI><INPUT TYPE="text" NAME="name" >Name of the product<BR>
<LI><INPUT TYPE="text" NAME="description" >Description<BR>
<LI><INPUT TYPE="text" NAME="size" >Size<BR>
<LI><INPUT TYPE="text" NAME="color" > Color<BR>
<LI><INPUT TYPE="text" NAME="quantity" > Quantity<BR>
<LI><INPUT TYPE="text" NAME="unit_price" > Price<BR>
</OL>
<P><INPUT TYPE="submit"></p>
<P><INPUT TYPE="RESET" VALUE="Clear Form"></P>
</FORM>
</BODY>
</HTML>

calls:

<HTML>
<TITLE>insert.ssc</TITLE>
<BODY>
<H1>DynaScript Sample</H1>
<!--SQL_INSERT TABLE="product" -->
</BODY>
</HTML>

The above example would be equivalent to:

<!--SQL
insert into product ( id, name, description, size, color, quantity, unit_price )
values ( 999, 'dog', 'furry', 'dog_sized', 'brown', 1, 123 )
-->

SQL condition

Function

The SQL condition tags allow you to specify a certain condition that must be fulfilled for the code between the conditional start and end tags to be executed.

Syntax

<!--SQL_ON_type [ NAME = queryname ]-->

<!--/SQL_ON_type -->

Parameters

type:

NO_ERROR | ERROR | NO_ROWS | ROWS

Attribute

Description

NAME

Name of a query. This attribute is optional. If you do not provide a query name, "SQL" is assumed.

Description

The following table lists the conditions that are supported by Dynamo. If the condition is fulfilled, the source between the conditional start and end tag is included in the output.

Start tag

End tag

Condition

<!--SQL_ON_NO_ERROR-->

<!--/SQL_ON_NO_ERROR-->

Query did not produce an error.

<!--SQL_ON_ERROR-->

<!--/SQL_ON_ERROR-->

Query produced an error.

<!--SQL_ON_NO_ROWS-->

<!--/SQL_ON_NO_ROWS-->

Result set did not produce any rows.

<!--SQL_ON_ROWS-->

<!--/SQL_ON_ROWS-->

Result set produced at least one row.

You can use one or more types of tags (SQL, SCRIPT etc.) between a conditional start and end tag.

Example

This example provides output only if the SQL query does not produce an error.

<!--SQL
select Fname, Lname, accno, amount
from savings where accno = :account
-->
<!--SQL_ON_NO_ERROR-->
<!--SCRIPT
document.WriteLn("You have " + account.amount + " in your account.");
-->
<!--/SQL_ON_NO_ERROR-->

SQL_ERROR_CODE

Function

The SQL_ERROR_CODE tag allows you to return the current error code. If a SQL instruction is carried out successfully an error code of 0 is returned.

Syntax

<!--SQL_ERROR_CODE [ NAME = queryname ] -->

Attribute

Description

NAME

Name of a query. This attribute is optional. If you do not provide a query name, "SQL" is assumed.

Example

This example returns 0 as well as the output generated from the SQL query as long as no errors are encountered during execution.

<!--SQL
SELECT Stock."Quantity", Stock."BookID"
FROM "DBA"."Stock" Stock
-->
<!--SQL_ERROR_CODE-->
<TABLE BORDER>
<TR>
<TH>Quantity</TH>
<TH>BookID</TH>
</TR>
<!--formatting--><TR>
<TD><!--DATA--></TD>
<TD><!--DATA--></TD>
</TR><!--/formatting-->
</TABLE>
</BODY>
</HTML>

SQL_ERROR_INFO

Function

The SQL_ERROR_INFO tag allows you to return a description of the error information.

Syntax

<!--SQL_ERROR_INFO [ NAME = queryname ] -->

Attribute

Description

NAME

Name of a query. This attribute is optional. If you do not provide a query name, "SQL" is assumed.

Example

This example displays error information for a query named myQuery :

<!--SQL NAME=myQuery
select lname, fname from customer
-->
<!--SQL_ERROR_INFO NAME="myQuery" -->
<!--SCRIPT
while (myQuery.MoveNext()) {
document.WriteLn(myQuery.GetValue(1) + "," + myQuery.GetValue(2));
}
myQuery.MoveFirst();
-->

SQL_STATE

Function

The SQL_STATE tag returns the current SQL state of a query.

Syntax

<!--SQL_STATE [ NAME = queryname ] -->

Attribute

Description

NAME

Name of a query. This attribute is optional. If you do not provide a query name, "SQL" is assumed.

<!---SQL_STATE NAME="myquery"-->

Example

This example displays the state of the SQL query:

<!--SQL
select lname, fname from customer
-->
<!--SQL_STATE-->
<!--SCRIPT
while (SQL.MoveNext()){
document.WriteLn(SQL.GetValue(1) + "," + SQL.GetValue(2));
}
-->

 


Copyright © 1999 Sybase, Inc. All rights reserved.