Reputation: 4296
I honestly have no idea what I'm doing wrong here.
Routine Name: procInsertName
Type: PROCEDURE
Parameters: IN Name VARCHAR 30 Charset
DECLARE tempNameID INT;
SELECT nameID
INTO tempNameID
FROM name
WHERE value = @Name;
IF tempNameID IS NULL THEN
INSERT INTO name (value)
VALUES (@Name);
END IF;
Is deterministic: unchecked
Definer: <blank>
Security type: DEFINER
SQL data access: CONTAINS SQL
Comment: <blank>
I'm coming out with an error of:
One or more errors have occurred while processing your request:
The following query has failed: "CREATE PROCEDURE `procInsertName`(IN `Name` VARCHAR(30)) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER DECLARE tempNameID INT;
SELECT nameID
INTO tempNameID
FROM name
WHERE value = @Name;
IF tempNameID IS NULL THEN
INSERT INTO name (value)
VALUES (@Name);
END IF;"
MySQL said: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE tempNameID INT;
SELECT nameID
INTO tempNameID
FROM name
WHERE valu' at line 1
Any help would be appreciated, I've spent the last 30 minutes looking around online and can't find anything. Thanks.
Upvotes: 0
Views: 1230
Reputation: 2799
I think the error might by lying in the @
symbol... You must be coming from an SQL Server background; MySQL doesn't use the @
notation for variables so your parameter is effectively just called Name
. Try to rename your Name
parameter to p_Name
and then replace the 2 instances of @Name
with p_Name
in the body of your stored proc.
I.e. like this:
CREATE PROCEDURE `procInsertName`(IN `p_Name` VARCHAR(30)) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER
DECLARE tempNameID INT;
SELECT nameID
INTO tempNameID
FROM name
WHERE value = p_Name;
IF tempNameID IS NULL THEN
INSERT INTO name (value)
VALUES (p_Name);
END IF;
Upvotes: 1