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" });
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。