ss-close
Syntax: (ss-close conn) Library: (scm database sqlserver) Description: Closes the TCP connection to the SQL Server. Example: (ss-close conn)
SQL Server database connectivity
(scm database sqlserver) is a Microsoft SQL Server client. Its API mirrors (scm database postgres) with an ss- prefix: connect, run queries and statements, read results as rows or alists, and stream large results with cursors.
(import (scm database sqlserver))
(with-ss-connection "localhost" 1433 "user" "pass" "db"
(lambda (conn)
(define res (ss-query conn "SELECT id, name FROM users"))
(ss-result->alist-list res)))
ss-exec runs non-row statements; ss-result-columns / ss-result-rows read a result directly; and ss-cursor-open / ss-cursor-fetch / ss-cursor-for-each iterate large result sets.
14 bindings
Syntax: (ss-close conn) Library: (scm database sqlserver) Description: Closes the TCP connection to the SQL Server. Example: (ss-close conn)
Syntax: (ss-connect host port user password database) Library: (scm database sqlserver) Description: Opens a TDS connection to SQL Server, performs TLS negotiation (via tds-connect), and completes Login7 SQL Server authentication. Returns a connection vector #(in out sock). Example: (define conn (ss-connect "localhost" 1433 "sa" "Password123!" "master"))
Syntax: (ss-cursor-close cursor) Library: (scm database sqlserver) Description: Closes the cursor, deallocates it, and commits the transaction. Returns #t. Safe to call multiple times; subsequent calls are no-ops. Example: (ss-cursor-close cur)
Syntax: (ss-cursor-columns cursor)
Library: (scm database sqlserver)
Description: Returns the column name vector for the cursor, or #f before the first fetch.
Example:
(ss-cursor-columns cur) => #("id" "name")
Syntax: (ss-cursor-fetch cursor [n]) Library: (scm database sqlserver) Description: Fetches up to n rows from the cursor (default 1). Returns a list of row vectors. Returns an empty list when the cursor is exhausted. Example: (ss-cursor-fetch cur 100)
Syntax: (ss-cursor-for-each cursor proc [batch-size]) Library: (scm database sqlserver) Description: Calls proc on each row vector from the cursor in batches (default 100). Automatically closes the cursor when all rows are consumed. Example: (ss-cursor-for-each cur (lambda (row) (display (vector-ref row 0))) 50)
Syntax: (ss-cursor-open conn sql) Library: (scm database sqlserver) Description: Opens a server-side cursor for the given SQL query using DECLARE CURSOR inside a transaction. Returns a cursor object. Call ss-cursor-close when done. Example: (define cur (ss-cursor-open conn "SELECT id, name FROM users ORDER BY id"))
Syntax: (ss-exec conn sql) Library: (scm database sqlserver) Description: Executes a SQL statement and discards the result. Suitable for DDL and DML. Example: (ss-exec conn "CREATE TABLE #t (id INT, name NVARCHAR(50))")
Syntax: (ss-query conn sql) Library: (scm database sqlserver) Description: Executes a SQL query and returns a result object #(cols rows). Use ss-result-columns and ss-result-rows to access the result. Example: (define result (ss-query conn "SELECT id, name FROM users"))
Syntax: (ss-result->alist-list result)
Library: (scm database sqlserver)
Description: Converts a query result to a list of association lists, one per row.
Each alist maps column name strings to value strings (or #f for NULL).
Example:
(ss-result->alist-list result) => (("id" . "1") ("name" . "alice")) ...)
Syntax: (ss-result-columns result)
Library: (scm database sqlserver)
Description: Returns the column name vector from a query result.
Example:
(ss-result-columns result) => #("id" "name")
Syntax: (ss-result-rows result)
Library: (scm database sqlserver)
Description: Returns the list of row vectors from a query result. Each row is a vector of
string values, or #f for NULL values.
Example:
(ss-result-rows result) => (#("1" "alice") #("2" "bob"))
Syntax: (with-ss-connection host port user password database proc)
Library: (scm database sqlserver)
Description: Opens a SQL Server connection, calls (proc conn), and closes the connection
on exit even if an exception is raised.
Example:
(with-ss-connection "localhost" 1433 "sa" "pass" "master"
(lambda (conn) (ss-result->alist-list (ss-query conn "SELECT 1 AS n"))))
Syntax: (with-ss-query host port user password database sql proc)
Library: (scm database sqlserver)
Description: Opens a connection and cursor, calls (proc conn cursor), and closes both
on exit even if an exception is raised.
Example:
(with-ss-query "localhost" 1433 "sa" "pass" "master" "SELECT * FROM t"
(lambda (conn cursor) (ss-cursor-for-each cursor display)))