|   | ![[ Previous ]](navbprev.gif)  ![[ Contents ]](navbhome.gif)  ![[ Index ]](navbhelp.gif)  ![[ Next ]](navbnext.gif)  | 
    Ns_Set *Ns_DbSelect(
    Ns_DbHandle *handle,
    char *sql
    );
The Ns_DbSelect function executes the given SQL statement. It returns an Ns_Set where the field key names are the column names that were returned by the select statement on success. The field values are NULL until the first call to Ns_DbGetRow where they are replaced with the values of the first row fetched from the database. The set is statically allocated; do not free it with Ns_SetFree when your query is complete.
On error, Ns_DbSelect returns NULL. Detailed error message may have accumulated in an internal buffer in the Ns_DbHandle.
    Ns_DbHandle *handle;
    if ((handle = Ns_DbPoolGetHandle("aPoolName")) != NULL) {
    	Ns_Set *row;
    	row = Ns_DbSelect(handle, "select * from aTable");
    	if (row == NULL) {
    		/*... handle select error ...*/
    	}
    	while ((status = Ns_DbGetRow(handle, row)) == NS_OK) {
    		/*... process the row fetched from the database ...*/
    	}
    	if (status != NS_END_DATA) {
    		/*... handle get row error ...*/
    	}
    	Ns_DbPoolPutHandle(handle); /* done with handle */