我很难在互联网上找到这个......
我需要在 Dapper + MySQL 中运行 QueryMultiple
命令,查询在 SQL Server 中如下所示:
DECLARE @clientDomain VARCHAR(64) SET @clientDomain = 'some-domain';
DECLARE @sessionId VARCHAR(64) SET @sessionId = 'd09a8sd09a7g8gh';
SELECT *
FROM sessions.Sessions Sessions
WHERE Sessions.ClientDomain = @clientDomain AND Sessions.SessionId = @sessionId;
SELECT *
FROM sessions.PageVisits PageVisits
WHERE PageVisits.SessionClientDomain = @clientDomain AND PageVisits.SessionId = @sessionId
当然,@clientDomain
和 @sessionId
将在 QueryMultiple
方法中作为查询参数正确传递,但我'我首先在 MySQL Workbench 中编写查询,因此我在那里声明了用于开发的变量。
我的问题是:
我无法让它在 Workbench 中运行,我想它也不会在 Dapper 中运行。
我尝试过的示例:
并使用BEGIN
/END
:
我已经经历过这个:https://dev.mysql.com/doc/refman/5.6/en/sql-syntax-compound-statements.html并尝试带标签、不带标签等变化。
Note: I do not want to write a stored procedure. My desired end result is a .sql file that I'm going to include as an embeded resource in the project, and then load it from code at run time.
I'm using MySQL 5.6, Workbench Community 8.0.15.
我错过了什么?
解决方案:
在 Jane 发表以下评论后,我有两个工作版本:
START TRANSACTION;
SET @clientDomain = 'some-domain';
SET @sessionId = 'd09a8sd09a7g8gh';
SELECT *
FROM sessions.Sessions Sessions
WHERE Sessions.ClientDomain = @clientDomain AND Sessions.SessionId = @sessionId;
SELECT *
FROM sessions.PageVisits PageVisits
WHERE PageVisits.SessionClientDomain = @clientDomain AND PageVisits.SessionId = @sessionId;
COMMIT;
一个带有 BEGIN;
但奇怪的是,没有 END;
(如果我尝试它,我会收到一条错误消息,告诉我寻找有关如何正确地编写 END
语句):
BEGIN;
SET @clientDomain = 'some-domain';
SET @sessionId = 'd09a8sd09a7g8gh';
SELECT *
FROM sessions.Sessions Sessions
WHERE Sessions.ClientDomain = @clientDomain AND Sessions.SessionId = @sessionId;
SELECT *
FROM sessions.PageVisits PageVisits
WHERE PageVisits.SessionClientDomain = @clientDomain AND PageVisits.SessionId = @sessionId;
我将第一个 (START TRANSACTION
) 设置为READ ONLY
。
最佳答案
我相信您正在寻找START TRANSACTION
START TRANSACTION;
DECLARE @clientDomain VARCHAR(64) SET @clientDomain = 'some-domain';
DECLARE @sessionId VARCHAR(64) SET @sessionId = 'd09a8sd09a7g8gh';
SELECT *
FROM sessions.Sessions Sessions
WHERE Sessions.ClientDomain = @clientDomain AND Sessions.SessionId = @sessionId;
SELECT *
FROM sessions.PageVisits PageVisits
WHERE PageVisits.SessionClientDomain = @clientDomain AND PageVisits.SessionId = @sessionId
COMMIT;
关于MySQL + Dapper 查询多个 : how to execute multiple SELECT queries at once?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55281461/