我是MySql存储过程的新手。假设我有一个这样的表
my_table
mz intensity
217 0.1
218 0.9
219 1
220 0.5
我想将这些值传递给存储过程并在其中使用它们,例如:
我试图调用stored_procedure(select mz, intensity from my_table)作为参数,但没有工作。
不,您不能将查询结果或表传递给过程。
https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html表示:
参数类型和函数返回类型可以声明为使用任何有效的数据类型。
数据类型是指MySQL支持的标量数据类型之一。查询不算作这些数据类型之一。MySQL也不支持任何数据类型的"集合"。如数组或表类型。
如果需要在过程中处理查询结果,则需要在该过程中运行查询。
您可以将查询作为VARCHAR(字符串)传递,并使用动态SQL在过程中执行它。阅读https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html获取信息和代码示例。
在过程中使用动态SQL是有风险的,如果您不能控制传递给过程的确切查询字符串。例如,不要从不受信任的来源获取输入并将其传递给您的过程以作为查询执行。那肯定会被黑的。