| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- '\"
- '\" tdbc_resultset.n --
- '\"
- '\" Copyright (c) 2008 by Kevin B. Kenny.
- '\"
- '\" See the file "license.terms" for information on usage and redistribution of
- '\" this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '\"
- .TH "tdbc::resultset" n 8.6 Tcl "Tcl Database Connectivity"
- '\" .so man.macros
- '\" IGNORE
- .if t .wh -1.3i ^B
- .nr ^l \n(.l
- .ad b
- '\" # BS - start boxed text
- '\" # ^y = starting y location
- '\" # ^b = 1
- .de BS
- .br
- .mk ^y
- .nr ^b 1u
- .if n .nf
- .if n .ti 0
- .if n \l'\\n(.lu\(ul'
- .if n .fi
- ..
- '\" # BE - end boxed text (draw box now)
- .de BE
- .nf
- .ti 0
- .mk ^t
- .ie n \l'\\n(^lu\(ul'
- .el \{\
- '\" Draw four-sided box normally, but don't draw top of
- '\" box if the box started on an earlier page.
- .ie !\\n(^b-1 \{\
- \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
- .\}
- .el \}\
- \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
- .\}
- .\}
- .fi
- .br
- .nr ^b 0
- ..
- '\" # CS - begin code excerpt
- .de CS
- .RS
- .nf
- .ta .25i .5i .75i 1i
- ..
- '\" # CE - end code excerpt
- .de CE
- .fi
- .RE
- ..
- '\" END IGNORE
- .BS
- .SH "NAME"
- tdbc::resultset \- TDBC result set object
- .SH "SYNOPSIS"
- .nf
- package require \fBtdbc 1.0\fR
- package require \fBtdbc::\fR\fIdriver version\fR
- \fBtdbc::\fR\fIdriver\fR\fB::connection create \fR\fIdb\fR \fI?\-option value\fR...?
- \fBset\fR \fIstmt\fR \fB[\fR\fIdb\fR \fBprepare\fR \fIsql-code\fR\fB]\fR
- \fBset\fR \fIresultset\fR \fB[\fR\fI$stmt\fR \fBexecute\fR ?\fIargs...\fR?\fB]\fR
- \fI$resultset\fR \fBcolumns\fR
- \fI$resultset\fR \fBrowcount\fR
- \fI$resultset\fR \fBnextrow\fR ?\fB-as\fR \fBlists\fR|\fBdicts\fR? ?\fB--\fR? \fIvarname\fR
- \fI$resultset\fR \fBnextlist\fR \fIvarname\fR
- \fI$resultset\fR \fBnextdict\fR \fIvarname\fR
- \fI$resultset\fR \fBnextresults\fR
- .fi
- .ad l
- .in 14
- .ti 7
- \fI$resultset\fR \fBallrows\fR ?\fB-as lists|dicts\fR? ?\fB-columnsvariable\fR \fIname\fR? ?\fB--\fR?
- .br
- .ti 7
- \fI$resultset\fR \fBforeach\fR ?\fB-as lists|dicts\fR? ?\fB-columnsvariable\fR \fIname\fR? ?\fB--\fR? \fIvarname\fR \fIscript\fR
- .br
- .ti 7
- \fI$resultset\fR \fBclose\fR
- .ad b
- .BE
- .SH "DESCRIPTION"
- .PP
- Every database driver for TDBC (Tcl DataBase Connectivity) implements
- a \fIresult set\fR object that represents a the results returned from
- executing SQL statement in a database. Instances of this object are created
- by executing the \fBexecute\fR object command on a statement object.
- .PP
- The \fBcolumns\fR object command returns a list of the names of the columns
- in the result set. The columns will appear in the same order as they appeared
- in the SQL statement that performed the database query. If the SQL statement
- does not return a set of columns (for instance, if it is an INSERT,
- UPDATE, or DELETE statement), the \fBcolumns\fR command will return an empty
- list.
- .PP
- The \fBrowcount\fR object command returns the number of rows in the database
- that were affected by the execution of an INSERT, UPDATE or DELETE statement.
- For a SELECT statement, the row count is unspecified.
- .PP
- The \fBnextlist\fR object command sets the variable given by \fIvarname\fR
- in the caller's scope to the next row of the results, expressed as a list
- of column values. NULL values are replaced by empty strings. The
- columns of the result row appear in the same order in which they
- appeared on the SELECT statement. The
- return of \fBnextlist\fR is \fB1\fR if the operation succeeded, and
- \fB0\fR if the end of the result set was reached.
- .PP
- The \fBnextdict\fR object command sets the variable given by \fIvarname\fR
- in the caller's scope to the next row of the results, expressed as a
- dictionary. The dictionary's keys are column names, and the values are
- the values of those columns in the row. If a column's value in the row
- is NULL, its key is omitted from the dictionary.
- The keys appear in the dictionary in the same order in which the
- columns appeared on the SELECT statement. The
- return of \fBnextdict\fR is \fB1\fR if the operation succeeded, and
- \fB0\fR if the end of the result set was reached.
- .PP
- The \fBnextrow\fR object command is precisely equivalent to the
- \fBnextdict\fR or \fBnextlist\fR object command, depending on whether
- \fB-as dicts\fR (the default) or \fB-as lists\fR is specified.
- .PP
- Some databases support the idea of a single statement that returns multiple
- sets of results. The \fBnextresults\fR object command is executed, typically
- after the \fBnextlist\fR of \fBnextdict\fR object command has returned
- \fB0\fR, to advance to the next result set. It returns \fB1\fR if there
- is another result set to process, and \fB0\fR if the result set just
- processed was the last. After calling \fBnextresults\fR and getting
- the return value of \fB1\fR, the caller may once again call \fBcolumns\fR
- to get the column descriptions of the next result set, and then return to
- calling \fBnextdict\fR or \fBnextlist\fR to process the rows of the
- next result set. It is an error to call \fBcolumns\fR, \fBnextdict\fR,
- \fBnextlist\fR or \fBnextrow\fR after \fBnextresults\fR has returned \fB0\fR.
- .PP
- The \fBallrows\fR object command sets the variable designated by the
- \fB-columnsvariable\fR option (if present) to the result of the \fBcolumns\fR
- object command. It then executes the \fBnextrow\fR object command
- repeatedly until the end of the result set is reached. If \fBnextresults\fR
- returns a nonzero value, it executes the above two steps (\fBcolumns\fR
- followed by iterated \fBnextrow\fR calls) as long as further results are
- available. The rows returned by \fBnextrow\fR
- are assembled into a Tcl list and become the return value of the
- \fBallrows\fR command; the last value returned from \fBcolumns\fR is what
- the application will see in \fB-columnsvariable\fR.
- .PP
- The \fBforeach\fR object command sets the variable designated by the
- \fB-columnsvariable\fR option (if present) to the result of the \fBcolumns\fR
- object command. It then executes the \fBnextrow\fR object command
- repeatedly until the end of the result set is reached, storing the
- successive rows in the variable designated by \fIvarName\fR. For each
- row, it executes the given \fIscript\fR. If the script terminates with
- an error, the error is reported by the \fBforeach\fR command, and
- iteration stops. If the script performs a \fBbreak\fR operation, the
- iteration terminates prematurely. If the script performs a
- \fBcontinue\fR operation, the iteration recommences with the next row.
- If the script performs a \fBreturn\fR, results are the same as if a
- script outside the control of \fBforeach\fR had returned. Any other
- unusual return code terminates the iteration and is reported from the
- \fBforeach\fR.
- .PP
- Once \fBnextrow\fR returns \fB0\fR, the \fBforeach\fR object command
- tries to advance to the next result set using \fBnextresults\fR. If
- \fBnextresults\fR returns \fB1\fR, the above steps (\fBcolumns\fR and
- \fBnextrow\fR, with script invocation) are repeated as long as more
- result sets remain. The \fIscript\fR will always see the correct description
- of the columns of the current result set in the variable designated
- byt \fB-columnsvariable\fR. At the end of the call, the variable
- designated by \fB-columnsvariable\fR will have the description of the
- columns of the last result set.
- .PP
- The \fBclose\fR object command deletes the result set and frees any
- associated system resources.
- .SH "SEE ALSO"
- encoding(n), tdbc(n), tdbc::connection(n), tdbc::statement(n), tdbc::tokenize(n)
- .SH "KEYWORDS"
- TDBC, SQL, database, connectivity, connection, resultset, statement,
- bound variable, stored procedure, call
- .SH "COPYRIGHT"
- Copyright (c) 2008 by Kevin B. Kenny.
- '\" Local Variables:
- '\" mode: nroff
- '\" End:
- '\"
|