SQL 和 Typescript 中的参数都是相同的实现,只是声明方式不同。
声明
在 SQL 中只有一个参数的命名空间,即在不同的查询中参数是共享的。
sql
-- @param uid / uint / label=用户ID; default=34
select * from `user` where id = ${uid};
delete from `user` where id = ${uid};在 Typescript 中,则可以以变量的形式传递。
typescript
redisshell((cli) => {
const params_key = params.string("key", { default: "hello" });
const params_value = params.string("value", { default: "world" });
// 注意: param实例不能直接参与运算,如果需要请使用`valmap`。
// 例如,下面的代码是错误的:
params_value.trim().toUpperCase();
// 正确的做法是使用`valmap`来实现运算:
const params_value1 = params.string("value", {
default: "world",
valmap: (v) => v.trim().toUpperCase(),
});
cli.get(params_key);
cli.set(params_key, params_value);
});在 SQL 中,声明多个参数:
sql
-- @param uid / uint
-- @param name
-- @param info / string / kind=json在 SQL 中使用<- name来引用另外一个参数
sql
-- @param uid / uint / label=用户ID; default=34
select * from `user` where id = ${uid};
-- @param delete_uid / <- uid / label=需要删除的用户ID
delete from `user` where id = ${delete_uid};字符串参数
字符串是参数的默认类型。
字符串参数额外提供两种类型,json和textarea,以方便输入较长的内容。
sql
-- @param txt / string / kind=json
select ${txt};时间参数
时间参数可以指定格式化模板和时区。
sql
-- @param timev / datetime / tz=Asia/SHanghai
select ${timev};timezone默认为计算机的本地时区,设置为db时会尝试查询并使用数据库的时区。 其他的值,例如utc,Asia/Shanghai等,请参见mdn。