Создать MySQL процедур - PullRequest
       5

Создать MySQL процедур

0 голосов
/ 24 апреля 2020

В настоящее время я пытаюсь создать хранимую процедуру на моем MySQL, хранящемся в Google Cloud Platform.

SQL правильно, поскольку я могу создать процедуру локально, но не могу понять, почему она не будет работать из командной строки:

mysql> CREATE PROCEDURE helpme
    -> (
    ->  @cid varchar(4)
    -> )
    -> AS
    -> DECLARE @res_cnt INT
    -> DECLARE @name CHAR(10)
    ->
    -> SELECT @res_cnt = COUNT(*) FROM dbo.TripGuides WHERE GuideNum = @cid
    -> SELECT @name = LastName FROM dbo.Guide WHERE GuideNum = @cid
    -> PRINT @name + ' has ' +  CAST (@res_cnt AS VARCHAR(10))+' guides.';
ERROR 1064 (42000): 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 '@cid varchar(4)
)
AS
DECLARE @res_cnt INT
DECLARE @name CHAR(10)

SELECT @res_cn' at line 3
mysql>

I ' Я пробовал несколько разных вещей, спасибо, что наткнулся на. При объявлении @cid я пробовал оба

@cid CHAR(4)
@cid VARCHAR(4)

, что приводило к одной и той же ошибке.

1 Ответ

1 голос
/ 24 апреля 2020

Для MySQL используйте

CREATE PROCEDURE helpme ( cid VARCHAR(4) )
SELECT CONCAT( ( SELECT LastName 
                 FROM Guide 
                 WHERE GuideNum = cid ), 
               ' has ', 
               ( SELECT COUNT(*) 
                 FROM TripGuides 
                 WHERE GuideNum = cid ), 
               ' guides.'
             ) AS message;

Просто из любопытства, как бы я go сказал об объявлении res_cnt и названии исходного SQL вызова, который я делал раньше?

CREATE PROCEDURE helpme ( cid VARCHAR(4) )
BEGIN
    DECLARE res_cnt INT;
    DECLARE `name` CHAR(10);

    SELECT COUNT(*) INTO res_cnt FROM TripGuides WHERE GuideNum = cid;
    SELECT LastName INTO `name` FROM Guide WHERE GuideNum = cid;
    SELECT CONCAT( `name`, ' has ', res_cnt, ' guides.' ) AS output_message;
END

И не забывайте о переназначении DELIMITER в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...