SQL vs MySQL Stored Procedures

A comparison of stored procedure(s) that were translated from SQL to MySQL

SQL

USE [#databse#]
GO
/****** Object:  StoredProcedure [dbo].[GetArticlesByCulture]    Script Date: 28/09/2022 09:57:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

                ALTER PROCEDURE [dbo].[GetArticlesByCulture]
                    @cultureId int = 127
                AS
                BEGIN
                    SET NOCOUNT ON;
	                SELECT
		                CPV.Author AS Author,
		                CPV.Id AS Id,
		                CPV.Content AS Name,
		                CPV.PublishDate AS PublishDate,
		                CPV.Category AS Category,
		                CPV.DisplayName AS Culture,
		                CPV.CultureId AS CultureId,
		                CP.Id AS ContentPageId,
						CP.SubSiteId AS SubSiteId
	                FROM
		                ContentPages CP
	                CROSS APPLY
		                (
			                SELECT TOP 
				                1 
				                CPV.Id, 
				                CPV.CultureId,
				                CPV.PublishDate,
				                C.DisplayName,
				                CI.Content,
				                U.FirstName + ' ' + U.LastName AS Author,
				                CN.Name AS Category
			                FROM
				                ContentPageVersions CPV
			                LEFT OUTER JOIN
				                Cultures C
					                ON CPV.CultureId = C.Id
			                LEFT OUTER JOIN
				                ContentItems CI
					                ON CPV.Id = CI.ContentPageVersionId
					                AND CI.SystemCodeId = 13
			                LEFT OUTER JOIN
				                Audit A
					                ON CPV.AuditId = A.Id
			                LEFT OUTER JOIN
				                Users U
					                ON A.UserId = U.Id
			                LEFT OUTER JOIN	
				                Categories CS
					                ON CPV.DefaultCategory = CS.Id
			                LEFT OUTER JOIN
				                CategoryNames CN
					                ON CS.Id = CN.CategoryId
	                                AND CN.CultureId = @cultureId
			                WHERE
				                CPV.ContentPageId = CP.Id
				                AND
				                CPV.CultureId = @cultureId
                            ORDER BY
	                            CPV.PublishDate DESC
		                ) CPV
	                WHERE
		                CP.Deleted = 0
		                AND
		                CP.PageType = 3 /* 3 = article type*/
                END
            

            

MySQL
CREATE DEFINER=`sa`@`%` PROCEDURE `GetArticlesByCulture`(p_cultureId int /* = 127 */)
BEGIN

	DROP TABLE IF EXISTS new_tbl;
	DROP TABLE IF EXISTS new_tbl2;
	                
	CREATE TEMPORARY TABLE new_tbl         
		SELECT
			CPV.Author AS Author,
			CPV.Id AS Id,
			CPV.Content AS Name,
			CPV.PublishDate AS PublishDate,
			CPV.Category AS Category,
			CPV.DisplayName AS Culture,
			CPV.CultureId AS CultureId,
			CP.Id AS ContentPageId  
		FROM
			ContentPages CP 
		INNER JOIN
			(
				SELECT
					CPV.Id, 
					CPV.CultureId,
					CPV.PublishDate,
					C.DisplayName,
					CI.Content,
					CONCAT(U.FirstName , ' ' , U.LastName) AS Author,
					CN.Name AS Category,
					CPV.ContentPageId 
				FROM
					ContentPageVersions CPV
				LEFT OUTER JOIN
					Cultures C
						ON CPV.CultureId = C.Id
				LEFT OUTER JOIN
					ContentItems CI
						ON CPV.Id = CI.ContentPageVersionId
						AND CI.SystemCodeId = 13
				LEFT OUTER JOIN
					Audit A
						ON CPV.AuditId = A.Id
				LEFT OUTER JOIN
					Users U
						ON A.UserId = U.Id
				LEFT OUTER JOIN	
					Categories CS
						ON CPV.DefaultCategory = CS.Id
				LEFT OUTER JOIN
					CategoryNames CN
						ON CS.Id = CN.CategoryId
						AND CN.CultureId = p_cultureId
			   
				ORDER BY
					CPV.PublishDate DESC
			) CPV
			on  CPV.ContentPageId = CP.Id  
		WHERE
			CP.Deleted = 0
			AND
			CP.PageType = 3 /* 3 = article type*/
			AND
				CPV.CultureId = p_cultureId;
						
	CREATE TEMPORARY TABLE new_tbl2 SELECT * FROM new_tbl;      

	SELECT * FROM new_tbl
		WHERE Id IN
		(SELECT MAX(Id) FROM new_tbl2 GROUP BY ContentPageId);

END
Created: 14-Oct-2022


Login to add comments