使用Prisma客户端3,我试图创建一个存储过程。
其背后的动机是:
- 我需要查询一个将在运行时创建的表。
- 为此,我需要使用动态查询,我读到存储过程将是这种情况下更好的实践(将表名作为参数传递)。
- 我希望我的团队中的每个成员都有存储过程的更新版本(就像Prisma中的所有表一样)
因此,我决定在应用程序启动时使用prisma.$executeRaw
创建存储过程,并在需要时调用它。
代码:let prisma = new PrismaClient();
let res = await prisma.$executeRawUnsafe(`
CREATE PROCEDURE \`module-events\`.GetAllProducts()
BEGIN
select 555;
END
`);
结果是:
Invalid `prisma.$executeRaw()` invocation:
Raw query failed. Code: `1295`. Message: `This command is not supported in the prepared statement protocol yet`
正如你所看到的,$executeRawUnsafe()
返回了相同的结果。有没有办法用Prisma创建一个存储过程?有没有办法运行一个不受Prisma限制的“自由风格”查询?
我从this的回答中了解到,可以创建存储过程:
您还可以使用$executeRaw生成存储过程或使用您选择的工具/CLI。
1条答案
按热度按时间hmmo2u0o1#
我相信你可以这样写一个SQL查询:
这是Exec SP的示例,但也请尝试创建。