当前位置: 首页 > 知识库问答 >
问题:

如果出现多行,如何在php mysql的侧存储过程中执行select查询?

麹正业
2023-03-14

如果出现多行,如何在php mysql中执行选择查询存储过程?

首先,我想从特定学生的表(练习测试结果)中提取不同的(chapter\u id)

然后代表distinct(chapter\u id)运行另一个查询以生成关联数组

我面临的问题是:

while( row found ){
/* here i perform the SELECT SUM(total_question) - SUM(total_incomplete) , SUM(total_correct) into totalattempt,talcorrect FROM practice_test_summary WHERE student_id =studentid AND chapter_id =chapterid;
set chpapter_successrate[i] =(totalcorrect * 100)/totalattempt; */

}

下面的代码是关于我到底想要什么的问题的更多信息

DELIMITER //
DROP PROCEDURE IF EXISTS get_result//
CREATE PROCEDURE get_result(studentid INT,courseid INT,out chpapter_successrate decimal(10,2))
BEGIN


SELECT distinct(chapter_id)  FROM practice_test_result WHERE course_id =courseid AND student_id =studentid;
set chapterid=chapter_id;
//here i want to use while loop for all chapter_id  and behalf of these chpater id's perform another select statement for performing successrate of specific chapter and store that into an array and return that array as out variable

SELECT SUM(total_question) - SUM(total_incomplete) , SUM(total_correct) into totalattempt,talcorrect FROM practice_test_summary WHERE student_id =studentid AND chapter_id =chapterid;

set chpapter_successrate[i] =(totalcorrect * 100)/totalattempt;


END// 

共有1个答案

汲睿
2023-03-14

您想要使用mysql“游标”来生成while循环功能

然后,您可以将每个chapter_id“获取”到一个局部变量中,以便在第二个选择语句中使用。

这里是mysql文档的链接和一个很好的示例。

http://dev.mysql.com/doc/refman/5.0/en/cursors.html

您需要使用局部chapterid变量的DECLARE语句修改上述内容。

此外,您将无法在MySQL存储过程中使用chpapter_successrate[i]作为数组。请参阅:如何在MySQL中模拟数组变量?替代方案。也许临时表是一个很好的工作。

 类似资料:
  • 我创建了一个过程,如: 并试图像这样执行它: 但它会抛出以下错误: 错误:函数insert_user_ax_register(未知,未知,未知,带时区的时间戳,未知,未知,带时区的时间戳,未知,未知,未知,bigint)不存在SQL状态:42883提示:没有函数匹配给定的名称和参数类型。可能需要添加显式类型转换。角色: 16 请帮我解决这个问题。我是新来的pgsql,无法从谷歌找到任何解决方案。我

  • 问题内容: 我们在应用程序中创建了许多效率低下的存储过程,我们总是将其推迟以提高其效率,直到我们对数据库性能遇到严重的问题为止。 现在,我正在考虑通过最常执行的存储过程一一修复它。 找出哪个存储过程最执行的最佳方法是什么? 是否有一个脚本可以显示哪个存储过程执行得最多? 问题答案: 使用: 参考:SQL SERVER‘2005’查找最高/最常使用的存储过程

  • 当我试图执行这个存储过程时,我收到了一个错误:“数据库连接器错误:'不允许从数据类型'CHAR'隐式转换为'INT'。使用CONVERT函数运行这个查询“为什么?”?我该怎么解决这个问题?谢谢 这是im用来执行SP的查询: 该列被设置为char(4),因此我不认为查询和数据类型不匹配 顺便说一句,我试过使用单引号、双引号和不使用引号的(“7066”),但仍然得到相同的sql错误。请帮忙 PS我在用

  • 问题内容: 我正在写一个基本查询,类似: 我想然后通过使用类似的结果执行: 我的问题是,如何检查? 问题答案: 如果您希望查询可能经常返回行(尤其是很多行),也可以这样做,这可能会提供一个更好的短路机会: …因为它将在到达匹配的第一行后立即返回。 我不建议仅使用它,因为您每次都必须实现(忽略)整个结果集。

  • 问题内容: 我得到一张下表: 如果用户搜索“ 1”,则程序将查看具有“ 1”的,然后它将在“ 5”中得到一个值,然后程序将继续在其中搜索“ 5”,并且将得到“ 3”在中,依此类推。因此它将打印出: 如果用户搜索“ 6”,它将打印出: 如何建立一个查询来做到这一点? 问题答案: 编辑 @leftclickben提到的解决方案也是有效的。我们也可以对它使用存储过程。 我们使用临时表存储输出结果,并且由