The chain of tools that make work with SQL procedures easier.
- #include "<filename>" - include the specified filename, the absolute and relative urls supported.
- #define name <value> - specify the value, that can be used as $name
- #define name(arg1, ..., argN) - the function, that can be used as $name(a1,...aN)
- #undef name - undefine previously defined instruction
- #if condition expression else alternative - conditional expressions
- SELECT ... ; -- > array - hint, that informs about query returns more that one element
- SELECT ... ; -- > object - hint, that informs about query returns exactly one element
- COMMENT "returns union" - hint, to merge all objects from results sets to one
- COMMENT "<table name> (<colum name column type>,...);" - hint, that allow to pass the list of arguments to procedure via temporary table
The extensions above native SQL.
- macros
#define table_name "mytable" select * from $table_name;
- macro-functions
#define quote(a) "a"
select upper(quote(a));
- conditions
#define a 1
#if a == 1
select * from t1;
#else
select * from t2;
#endif
- includes
#include "common.sql"
Generate the native code to work with SQL procedures. Now supports python3 native and aio. The C++ under development. Required WSQL.
- SELECT ... ; -- > array - hint, that informs about query returns more that one element
- SELECT ... ; -- > object - hint, that informs about query returns exactly one element
- COMMENT "returns union" - hint, to merge all objects from results sets to one
- COMMENT "<table name> (<colum name column type>,...);" - hint, that allow to pass the list of arguments to procedure via temporary table
CREATE PROCEDURE table1.insert (value VARCHAR(10))
BEGIN
INSERT INTO table1 (value) VALUES(value);
SELECT LAST_INSERT_ID() AS id;
END
@coroutine
def insert(connection, value=None):
"""
insert, table1
:param value: the value(VARCHAR(10), IN))
:return (id,)
"""
@coroutine
def __query(__connection):
__cursor = __connection.cursor()
try:
yield from __cursor.callproc(b"procedure4", (value,))
return (yield from __cursor.fetchall())[0]
finally:
yield from __cursor.close()
try:
return (yield from connection.execute(__query))
except Error as e:
raise handle_error(exceptions, e)