11
Scripting Languages / Re: ScriptBasic 3.0
« Last post by John on April 14, 2024, 02:29:48 PM »I've added the ODBC FetchSchema() function to the sb-dev-msvc repository branch. I've pushed the code to the repo and attached a Windows 64 bit ODBC extension module DLL.
Linux
jrs@linux-dev:~/sb/examples$ scriba getschema.sb
Column Name: film_id, Type: 4, Size: 10, Digits: 0, Nullable: 0
Column Name: title, Type: 12, Size: 255, Digits: 0, Nullable: 0
Column Name: description, Type: -1, Size: 8190, Digits: 0, Nullable: 1
Column Name: release_year, Type: 4, Size: 10, Digits: 0, Nullable: 1
Column Name: language_id, Type: 5, Size: 5, Digits: 0, Nullable: 0
Column Name: rental_duration, Type: 5, Size: 5, Digits: 0, Nullable: 0
Column Name: rental_rate, Type: 2, Size: 4, Digits: 2, Nullable: 0
Column Name: length, Type: 5, Size: 5, Digits: 0, Nullable: 1
Column Name: replacement_cost, Type: 2, Size: 5, Digits: 2, Nullable: 0
Column Name: rating, Type: 12, Size: 255, Digits: 0, Nullable: 1
Column Name: last_update, Type: 93, Size: 26, Digits: 6, Nullable: 0
Column Name: special_features, Type: 12, Size: 255, Digits: 0, Nullable: 1
Column Name: fulltext, Type: 12, Size: 255, Digits: 0, Nullable: 0
jrs@linux-dev:~/sb/examples$
Windows 64 Bit
C:\ScriptBasic64\examples>scriba fetchschema.sb
Column Name: GridSort, Type: -9, Size: 40, Digits: 0, Nullable: 0
Column Name: ClientCode, Type: -9, Size: 25, Digits: 0, Nullable: 0
Column Name: TaskCode, Type: -9, Size: 30, Digits: 0, Nullable: 0
Column Name: TaskDate, Type: -9, Size: 15, Digits: 0, Nullable: 0
Column Name: Billable, Type: 2, Size: 4, Digits: 2, Nullable: 1
Column Name: NonBillable, Type: 2, Size: 4, Digits: 2, Nullable: 1
Column Name: DiscoveryDemo, Type: 2, Size: 4, Digits: 2, Nullable: 1
Column Name: Bill, Type: -8, Size: 1, Digits: 0, Nullable: 0
Column Name: TaskNotes, Type: -10, Size: 1073741823, Digits: 0, Nullable: 0
Column Name: BillingComplete, Type: -8, Size: 1, Digits: 0, Nullable: 0
C:\ScriptBasic64\examples>
ODBC SQL Column Type Values
ODBC JDBC Data Type
-11 -11 GUID
-7 -7 BIT
-6 -6 TINYINT
-5 -5 BIGINT
-4 -4 LONGVARBINARY
-3 -3 VARBINARY
-2 -2 BINARY
-1 -1 LONGVARCHAR
0 0 Unknown type
1 1 CHAR
2 2 NUMERIC
3 3 DECIMAL
4 4 INTEGER
5 5 SMALLINT
6 6 FLOAT
7 7 REAL
8 8 DOUBLE
9 91 DATE
10 92 TIME
11 93 TIMESTAMP
12 12 VARCHAR
Unicode SQL types for ODBC applications working with multibyte character sets, such as in Chinese, Hebrew, Japanese, or Korean locales.
ODBC Data Type
-10 WLONGVARCHAR
-9 WVARCHAR
Remember to add the FetchSchema DECLARE to your odbc.bas include file. It's added if you build from source.
Linux
Code: ScriptBasic
- IMPORT odbc.bas
- dbh = odbc::RealConnect("PSQL","postgres","<Password>")
- SQL = "SELECT * FROM film LIMIT 1"
- odbc::Query(dbh, SQL)
- odbc::FetchSchema(dbh, col)
- odbc::Close(dbh)
- FOR x = 0 TO UBOUND(col) STEP 5
- PRINT FORMAT("Column Name: %s, Type: %i, Size: %i, Digits: %i, Nullable: %i\n", col[x], col[x + 1], col[x + 2], col[x + 3], col[x + 4])
- NEXT
jrs@linux-dev:~/sb/examples$ scriba getschema.sb
Column Name: film_id, Type: 4, Size: 10, Digits: 0, Nullable: 0
Column Name: title, Type: 12, Size: 255, Digits: 0, Nullable: 0
Column Name: description, Type: -1, Size: 8190, Digits: 0, Nullable: 1
Column Name: release_year, Type: 4, Size: 10, Digits: 0, Nullable: 1
Column Name: language_id, Type: 5, Size: 5, Digits: 0, Nullable: 0
Column Name: rental_duration, Type: 5, Size: 5, Digits: 0, Nullable: 0
Column Name: rental_rate, Type: 2, Size: 4, Digits: 2, Nullable: 0
Column Name: length, Type: 5, Size: 5, Digits: 0, Nullable: 1
Column Name: replacement_cost, Type: 2, Size: 5, Digits: 2, Nullable: 0
Column Name: rating, Type: 12, Size: 255, Digits: 0, Nullable: 1
Column Name: last_update, Type: 93, Size: 26, Digits: 6, Nullable: 0
Column Name: special_features, Type: 12, Size: 255, Digits: 0, Nullable: 1
Column Name: fulltext, Type: 12, Size: 255, Digits: 0, Nullable: 0
jrs@linux-dev:~/sb/examples$
Windows 64 Bit
Code: ScriptBasic
- IMPORT odbc.bas
- dbh = ODBC::RealConnect("SB64","","")
- ODBC::query(dbh, "SELECT TOP 1 * FROM TaskEntry")
- odbc::FetchSchema(dbh, col)
- odbc::Close(dbh)
- FOR x = 0 TO UBOUND(col) STEP 5
- PRINT FORMAT("Column Name: %s, Type: %i, Size: %i, Digits: %i, Nullable: %i\n", col[x], col[x + 1], col[x + 2], col[x + 3], col[x + 4])
- NEXT
C:\ScriptBasic64\examples>scriba fetchschema.sb
Column Name: GridSort, Type: -9, Size: 40, Digits: 0, Nullable: 0
Column Name: ClientCode, Type: -9, Size: 25, Digits: 0, Nullable: 0
Column Name: TaskCode, Type: -9, Size: 30, Digits: 0, Nullable: 0
Column Name: TaskDate, Type: -9, Size: 15, Digits: 0, Nullable: 0
Column Name: Billable, Type: 2, Size: 4, Digits: 2, Nullable: 1
Column Name: NonBillable, Type: 2, Size: 4, Digits: 2, Nullable: 1
Column Name: DiscoveryDemo, Type: 2, Size: 4, Digits: 2, Nullable: 1
Column Name: Bill, Type: -8, Size: 1, Digits: 0, Nullable: 0
Column Name: TaskNotes, Type: -10, Size: 1073741823, Digits: 0, Nullable: 0
Column Name: BillingComplete, Type: -8, Size: 1, Digits: 0, Nullable: 0
C:\ScriptBasic64\examples>
ODBC SQL Column Type Values
ODBC JDBC Data Type
-11 -11 GUID
-7 -7 BIT
-6 -6 TINYINT
-5 -5 BIGINT
-4 -4 LONGVARBINARY
-3 -3 VARBINARY
-2 -2 BINARY
-1 -1 LONGVARCHAR
0 0 Unknown type
1 1 CHAR
2 2 NUMERIC
3 3 DECIMAL
4 4 INTEGER
5 5 SMALLINT
6 6 FLOAT
7 7 REAL
8 8 DOUBLE
9 91 DATE
10 92 TIME
11 93 TIMESTAMP
12 12 VARCHAR
Unicode SQL types for ODBC applications working with multibyte character sets, such as in Chinese, Hebrew, Japanese, or Korean locales.
ODBC Data Type
-10 WLONGVARCHAR
-9 WVARCHAR
Remember to add the FetchSchema DECLARE to your odbc.bas include file. It's added if you build from source.