mysql - 在MYSQL中使用参数创建基于视图的存储过程
问题描述
对于我试图创建的存储过程,我在 mysqlworkbench 中收到语法错误 1064。存储过程基于我创建的视图。
这是我基于数据集的观点(https://www.kaggle.com/gregorut/videogamesales):
Create View CodSales AS
SELECT
Name, Platform, Year, Global_Sales
FROM
vgsales
WHERE
Name LIKE 'Call of Duty:%'
ORDER BY Global_Sales DESC;
这是基于 View 的存储过程,带有一个参数:
CREATE PROCEDURE CallofDuty_Sales @Name varchar(25)
AS
SELECT * FROM CodSales WHERE Name = @Name
GO;
Exec CallofDuty_Sales @Name = 'Call of Duty: Black Ops'
我根据https://www.w3schools.com/sql/sql_stored_procedures.asp中显示的示例执行了存储过程
解决方案
您的代码适用于 sql server ,在 mysql 中不起作用
一定是
DELIMITER //
CREATE PROCEDURE `CallofDuty_Sales` (IN _Name varchar(25))
BEGIN
SELECT
Name, Platform, Year, Global_Sales
FROM
vgsales
WHERE
Name LIKE CONCAT(_Name,'%')
ORDER BY Global_Sales DESC;
END//
DELIMITER ;
CALL CallofDuty_Sales ('Call of Duty: Black Ops');
推荐阅读
- javascript - 记录 EventEmitters 的正确方法是什么?
- c# - C# 以错误的顺序向 Microsoft 团队发送击键
- c# - xamarin android绑定事件
- r - 在 R 中应用涉及两个数据框列的 if else 语句
- java - 为什么当我尝试重新分配一个变量时我收到错误,“删除这个无用的分配给局部变量”
- kotlin - Kotlin 检查 Collection 是否既不为空也不为空
- swift - 如何在 Swift 的 UICollectionView 中一行显示 2 个单元格?
- android - Android onResponse 方法永远不会被称为 Retrofit2
- lua - wireshark 自定义 lua dissector 显示 metaData 列
- java - 我需要服务才能在设备上打开相机吗?