NodeJS Prisma ORM-创建存储过程

lymnna71  于 2023-03-22  发布在  Node.js
关注(0)|答案(1)|浏览(231)

使用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。

hmmo2u0o

hmmo2u0o1#

我相信你可以这样写一个SQL查询:

await this.prisma.$queryRaw(
  Prisma.sql`EXEC [dbo].[Spname]`,
);

这是Exec SP的示例,但也请尝试创建。

相关问题