Skip to content

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};

字符串参数

字符串是参数的默认类型。

字符串参数额外提供两种类型,jsontextarea,以方便输入较长的内容。

sql
-- @param txt / string / kind=json
select ${txt};

时间参数

时间参数可以指定格式化模板和时区。

sql
-- @param timev / datetime / tz=Asia/SHanghai
select ${timev};

timezone默认为计算机的本地时区,设置为db时会尝试查询并使用数据库的时区。 其他的值,例如utcAsia/Shanghai等,请参见mdn