预编译SQL与占位

预编译SQL

预编译SQL需要依照不同数据库的方言来编写SQL:

参数占位符

Postgres用$数字作为占位符:update 商品 set 价格 = $2 where id = $1
MySQL用?作为占位符:update 商品 set 价格 = ? where id = ?
SQL Server用@变量作为占位符:update 商品 set 价格 = @价格 where id = @id
Oracle用:变量作为占位符:update 商品 set 价格 = :价格 where id = :id

翻页查询

Postgres和MySQL用limitselect * from 商品 order by id limit 50 offset 25
SQL Server和Oracle用fetch nextselect * from 商品 order by id offset 25 rows fetch next 50 rows only

占位值 v

从上面的占位方言可以知道:
Postgres和MySQL需要数组类型的占位值与对应下标的占位符相匹配,Postgres的参数数组的下标+1对应占位符的数字,MySQL的参数数组的下标对应占位符所在语句中的顺序,如:$sql.SQL名({ v: [1747294460000000, 99] }):把指定id的商品价格改为99元;
SQL Server和Oracle需要对象类型的占位值与对应键的占位符相匹配,如:$sql.SQL名({ v: { id: 1747294460000000, 价格: 99 } })

由众触低代码平台生成和驱动