Prisma ORM-创建存储过程

问题描述 投票:0回答:1

使用 Prisma 客户端 3 我正在尝试创建一个存储过程。

其背后的动机是:

  • 我需要查询将在运行时创建的表。
  • 为此,我需要使用动态查询, 我读到,在这种情况下,存储过程将是更好的做法(将表名称作为参数传递)。
  • 我希望我的团队的每个成员都拥有存储过程的更新版本(就像 Prisma 中的所有表一样)

因此,我决定做的是在应用程序启动时使用

prisma.$executeRaw
创建存储过程,并在需要时调用它。

代码: 让 prisma = new PrismaClient();

let res = await prisma.$executeRawUnsafe(`
  CREATE PROCEDURE \`module-events\`.GetAllProducts()
  BEGIN
    select 555;
  END
`);

结果:

无效的

prisma.$executeRaw()
调用:
原始查询失败。代码:
1295
。留言:
This command is not supported in the prepared statement protocol yet

如您所见,

$executeRawUnsafe()
返回相同的结果。有没有办法用 Prisma 创建存储过程?有没有一种方法可以运行不受 Prisma 限制的“自由风格”查询?

我从this答案中了解到可以创建存储过程:

您还可以使用 $executeRaw 生成存储过程或使用您选择的工具/CLI。

node.js prisma
1个回答
0
投票

我相信你可以这样做来编写 SQL 查询:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.