@@ -0,0 +1,98 @@
-- =============================================
-- Description: a dbo s<> m<EFBFBD> ban l<> v<EFBFBD> nem glob<6F> lis t<> rolt elj<6C> r<EFBFBD> sok friss<73> t<EFBFBD> se az int<6E> zm<7A> nyi s<> m<EFBFBD> kba
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID ( ' dbo.sp_Global_CreateSchemaStoredProcedures ' ) IS NOT NULL BEGIN
DROP PROCEDURE [ dbo ] . [ sp_Global_CreateSchemaStoredProcedures ]
END
GO
CREATE PROCEDURE [ dbo ] . [ sp_Global_CreateSchemaStoredProcedures ]
@ pSchemaName NVARCHAR ( 100 ) , -- pl: 'KR_BEDO_Schema' | NULL eset<65> n az <20> sszes s<> m<EFBFBD> n v<> gigmegy
@ pStoredProcedureNames XML -- pl: '<StoredProcedureNames><StoredProcedureName>sp_GetOrarend</StoredProcedureName></StoredProcedureNames>' | NULL eset<65> n az <20> sszes nem glob<6F> lis t<> rolt elj<6C> r<EFBFBD> son v<> gigmegy
AS
BEGIN
DECLARE @ objectId INT
DECLARE @ storedProcedureName NVARCHAR ( 4000 )
DECLARE @ storedProcedureDefinition NVARCHAR ( MAX )
DECLARE @ schemaName NVARCHAR ( 100 )
DECLARE @ deleteStoredProcedureSQL NVARCHAR ( 4000 )
DECLARE @ createStoredProcedureSQL NVARCHAR ( MAX )
DECLARE @ schemaNames CURSOR
IF @ pSchemaName IS NOT NULL
SET @ schemaNames = CURSOR LOCAL FOR
SELECT @ pSchemaName
ELSE
SET @ schemaNames = CURSOR LOCAL FOR
SELECT name FROM sys . schemas s
INNER join T_INTEZMENY i ON ' KR_ ' + i . C_AZONOSITO + ' _schema ' = s . name
WHERE principal_id = 1 AND name LIKE ' KR[_]%[_]Schema '
ORDER BY name
DECLARE @ storedProcedures CURSOR
IF @ pStoredProcedureNames IS NOT NULL
SET @ storedProcedures = CURSOR LOCAL FOR
SELECT p . object_id , p . name , m . Definition
FROM sys . procedures p
INNER JOIN sys . sql_modules m ON p . object_id = m . object_id
INNER JOIN sys . schemas s ON s . schema_id = p . schema_id
WHERE
s . name = ' dbo '
AND p . name IN ( SELECT DISTINCT StoredProcedureName . value ( ' (.)[1] ' , ' varchar(100) ' ) FROM @ pStoredProcedureNames . nodes ( ' StoredProcedureNames/StoredProcedureName ' ) AS StoredProcedureNames ( StoredProcedureName ) )
ORDER BY p . name
ELSE
SET @ storedProcedures = CURSOR LOCAL FOR
SELECT p . object_id , p . name , m . Definition
FROM sys . procedures p
INNER JOIN sys . sql_modules m ON p . object_id = m . object_id
INNER JOIN sys . schemas s ON s . schema_id = p . schema_id
WHERE s . name = ' dbo ' AND p . name NOT LIKE ' sp_Global_% '
ORDER BY p . name
OPEN @ storedProcedures
FETCH NEXT FROM @ storedProcedures INTO @ objectId , @ storedProcedureName , @ storedProcedureDefinition
WHILE @ @ FETCH_STATUS = 0 BEGIN
IF OBJECT_ID ( @ objectId ) IS NULL BEGIN
SET @ storedProcedureDefinition = REPLACE ( @ storedProcedureDefinition , ' dbo.fn ' , ' #schemaName#.fn ' )
SET @ storedProcedureDefinition = REPLACE ( @ storedProcedureDefinition , ' dbo.[fn ' , ' #schemaName#.[fn ' )
SET @ storedProcedureDefinition = REPLACE ( @ storedProcedureDefinition , ' [dbo].fn ' , ' #schemaName#.fn ' )
SET @ storedProcedureDefinition = REPLACE ( @ storedProcedureDefinition , ' [dbo].[fn ' , ' #schemaName#.[fn ' )
SET @ storedProcedureDefinition = REPLACE ( @ storedProcedureDefinition , ' dbo. ' , ' ' )
SET @ storedProcedureDefinition = REPLACE ( @ storedProcedureDefinition , ' [dbo]. ' , ' ' )
OPEN @ schemaNames
FETCH NEXT FROM @ schemaNames INTO @ schemaName
WHILE @ @ FETCH_STATUS = 0 BEGIN
SET @ createStoredProcedureSQL = REPLACE ( @ storedProcedureDefinition , ' CREATE PROCEDURE ' , ' CREATE OR ALTER PROCEDURE [ ' + @ schemaName + ' ]. ' )
SET @ createStoredProcedureSQL = REPLACE ( @ createStoredProcedureSQL , ' #schemaName#.fn ' , ' [ ' + @ schemaName + ' ].fn ' )
SET @ createStoredProcedureSQL = REPLACE ( @ createStoredProcedureSQL , ' #schemaName#.[fn ' , ' [ ' + @ schemaName + ' ].[fn ' )
PRINT CAST ( @ objectId AS VARCHAR ( 10 ) ) + ' ' + @ storedProcedureName + ' ' + @ schemaName
EXEC sp_executesql @ createStoredProcedureSQL
FETCH NEXT FROM @ schemaNames INTO @ schemaName
END
CLOSE @ schemaNames
END
FETCH NEXT FROM @ storedProcedures INTO @ objectId , @ storedProcedureName , @ storedProcedureDefinition
END
CLOSE @ storedProcedures
DEALLOCATE @ storedProcedures
DEALLOCATE @ schemaNames
END