MySQL 存储过程返回空结果

标签 mysql sql stored-procedures

我有这个存储过程:

DELIMITER $$

CREATE DEFINER=`thinktosco_com`@`%` PROCEDURE `GetQuestions`(IN languageId CHAR(36), IN userId CHAR(36), IN _limit INT)
BEGIN
    SELECT DISTINCT * FROM `QuestionTranslation` 
    WHERE `LanguageId` = languageId
    AND Phase != 'HISTORY'
    AND `QuestionId` NOT IN (SELECT DISTINCT `QuestionId` FROM `Answer` WHERE `UserId` = userId)
    ORDER BY RAND() LIMIT _limit;
END

运行 select 语句时,我得到了正确的结果,但是当运行如下所示的存储过程时,我没有得到任何结果:

CALL thinktoscore_com_db.GetQuestions('9997f94d-1b90-11e3-92c0-0050568243f2', '9d6a59d9-ee09-41d7-896b-7c9930e324dd', 12);

表 QuestionTranslation 包含 1132 行,Answer 表包含 484 行匹配 userId = '9d6a59d9-ee09-41d7-896b-7c9930e324dd'。谁能指出我在这里做错了什么?

提前致谢。

/索伦

最佳答案

在对存储过程的调用中,参数#1“languageId”看起来非常像参数#2“userId”。

CALL thinktoscore_com_db.GetQuestions(
    '9997f94d-1b90-11e3-92c0-0050568243f2', 
    '9d6a59d9-ee09-41d7-896b-7c9930e324dd', 
    12);

您确定“9997f94d-1b90-11e3-92c0-0050568243f2”是 languageId 吗?

关于MySQL 存储过程返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20148936/

相关文章:

c# - 在将字符串从一种形式传递到另一种形式时调用函数

sql - 替换Where子句中的concat操作

c# - 使用 LINQ to SQL 读取大表 : Running out of memory vs slow paging

sql - 我们可以在 SQL Server 中的两个存储过程之间进行连接吗

php - 截断 MySQL 表但排除第一列

php - pdo 插入语句使用日期时间错误

Mysql TableView 数据类型

c# - 如何将 C# 中的 2 个 SQL 过程的结果附加到单个 CSV 文件中?

c# - 计算c#中执行存储过程之前的执行时间

mysql - 如何在 MariaDB 中创建函数/过程以在访问表时运行更新脚本?