#ifndef __SQL_CHH__ #define __SQL_CHH__ #include time.chh %<_sqlDrivers=%hash()>\ \ %define(sqlRegisterDriver,name,connect,query,close,dbinfo,update,error, %<_sqlDrivers{%name}=%hash(connect,%&connect, query,%&query, close,%&close, dbinfo,%&dbinfo, update,%&update, error,%&error)> )\ \ %define(sqlConnect,url,dict, %locals(regs,drivername,hostname,port,database,connection, %\ %if(%[%smatch(%'^chdbc:([^:]+)://([^/:]+)(:([0-9]+))?/([^/]+)/$',%url,%®s) != -1], %\ %\ %\ %\ %if(%hcontains(%_sqlDrivers,%drivername), %\ %hash(driver,%&_sqlDrivers{%drivername}, connection,%&connection, dbinfo,%_sqlDrivers{%drivername}{dbinfo}(%&connection)) , 0 ) , 0 ) ))\ \ %define(sqlClose,conn, %conn{driver}{close}(%&conn{connection}) )\ \ %define(sqlDatabaseInfo,conn, %&conn{dbinfo} )\ \ %define(sqlQuery,conn,query, %locals(result, %\ %if(%result, %foreachkey(colname,%&result{colinfo}, %cond(%equal(%result{colinfo}{%colname}{type},date), %foreach(row,%&result{rows}, % ), %equal(%result{colinfo}{%colname}{type},time), %foreach(row,%&result{rows}, % ), %equal(%result{colinfo}{%colname}{type},datetime), %foreach(row,%&result{rows}, % ) ) ) )\ %&result ))\ \ %define(sqlUpdate,conn,query, %conn{driver}{update}(%&conn{connection},%query) )\ \ %define(sqlError,conn, %conn{driver}{error}(%&conn{connection}) )\ \ %define(sqlResultData,result, %&result{rows} )\ \ %define(sqlResultColumnInfo,result, %&result{colinfo} )\ \ %define(sqlResultColumnNames,result, %&result{colnames} )\ \ %if(%bound(_sqlMsqlConnect), %sqlRegisterDriver(msql, %&_sqlMsqlConnect, %&_sqlMsqlQuery, %&_sqlMsqlClose, %&_sqlMsqlDatabaseInfo, %&_sqlMsqlUpdate, %&_sqlMsqlError) )\ %if(%bound(_sqlMysqlConnect), %sqlRegisterDriver(mysql, %&_sqlMysqlConnect, %&_sqlMysqlQuery, %&_sqlMysqlClose, %&_sqlMysqlDatabaseInfo, %&_sqlMysqlUpdate, %&_sqlMysqlError) )\ %if(%bound(_sqlAdabasConnect), %sqlRegisterDriver(adabas, %&_sqlAdabasConnect, 0, %&_sqlAdabasClose, %lambda(i,%hash()), 0, 0) )\ #endif