init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,131 @@
|
|||
-- ============================================================================================
|
||||
-- Schema view-kat generál a paraméterekben megadott táblákhoz és schemákhoz,
|
||||
-- illetve, ha léteznek akkor frissíti őket.
|
||||
--
|
||||
-- Ha a @pTables vagy a @pSchemas paraméter értéke NULL, akkor az összes
|
||||
-- táblára/schemára megcsinálja a view-kat
|
||||
|
||||
-- @pTables: tábla nevek vesszővel elválasztva, pl.: 'T_TANEV, T_UJTABLA,T_TANULO'
|
||||
-- @pSchemas: schema nevek vesszővel elválasztva, pl.: 'KR_asd_Schema,dbo, KR_dobokata_Schema'
|
||||
-- ============================================================================================
|
||||
DROP PROCEDURE IF EXISTS dev.uspCreateSchemaViews
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE dev.uspCreateSchemaViews
|
||||
@pTables nvarchar(max)
|
||||
,@pSchemas nvarchar(max) = NULL
|
||||
,@pDebugMode bit = 0
|
||||
AS
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE
|
||||
@tableName sysname
|
||||
,@schemaName sysname
|
||||
,@intezmenyId int
|
||||
,@tanevId int
|
||||
,@notExistingObject sysname
|
||||
,@tanevColumn sysname
|
||||
,@intezmenyColumn sysname
|
||||
,@toroltColumn sysname
|
||||
,@dbName sysname = DB_NAME()
|
||||
,@sql nvarchar(max)
|
||||
|
||||
SELECT TOP 1 @notExistingObject = s.value
|
||||
FROM STRING_SPLIT(@pTables, ',') s
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys.tables t
|
||||
WHERE s.value = t.name
|
||||
AND t.name LIKE 'T[_]%'
|
||||
AND t.schema_id = 1
|
||||
)
|
||||
|
||||
IF @notExistingObject IS NOT NULL BEGIN
|
||||
RAISERROR('A megadott tábla nem létezik a %s adatbázisban: %s', 16, 1, @dbName, @notExistingObject)
|
||||
RETURN
|
||||
END
|
||||
|
||||
SELECT TOP 1 @notExistingObject = s.value
|
||||
FROM STRING_SPLIT(@pSchemas, ',') s
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys.schemas t
|
||||
WHERE s.value = t.name
|
||||
)
|
||||
|
||||
IF @notExistingObject IS NOT NULL BEGIN
|
||||
RAISERROR('A megadott schema nem létezik a %s adatbázisban: %s', 16, 1, @dbName, @notExistingObject)
|
||||
RETURN
|
||||
END
|
||||
|
||||
DECLARE @ViewCursor CURSOR
|
||||
|
||||
SET @ViewCursor = CURSOR FOR
|
||||
SELECT
|
||||
tbl.name AS TableName
|
||||
,sch.name AS SchemaName
|
||||
,i.ID AS IntezmenyId
|
||||
,tv.ID AS TanevId
|
||||
,ctv.name AS TanevColumn
|
||||
,cin.name AS IntezmenyColumn
|
||||
,ctr.name AS ToroltColumn
|
||||
FROM sys.tables tbl
|
||||
LEFT JOIN sys.columns cid ON tbl.object_id = cid.object_id AND cid.name IN ('ID')
|
||||
LEFT JOIN sys.columns cin ON tbl.object_id = cin.object_id AND cin.name IN ('C_INTEZMENYID', 'C_ALINTEZMENYID')
|
||||
LEFT JOIN sys.columns ctv ON tbl.object_id = ctv.object_id AND ctv.name IN ('C_TANEVID', 'C_ALTANEVID')
|
||||
LEFT JOIN sys.columns ctr ON tbl.object_id = ctr.object_id AND ctr.name IN ('TOROLT')
|
||||
CROSS JOIN sys.schemas sch
|
||||
INNER JOIN STRING_SPLIT(ISNULL(@pTables, ''), ',') t ON (@pTables IS NULL OR t.value = tbl.name)
|
||||
INNER JOIN STRING_SPLIT(ISNULL(@pSchemas, ''), ',') s ON (@pSchemas IS NULL OR sch.name = s.value)
|
||||
LEFT JOIN T_INTEZMENY i ON 'KR_' + i.C_AZONOSITO + '_Schema' = sch.name AND i.TOROLT = 'F'
|
||||
LEFT JOIN T_TANEV tv ON tv.C_INTEZMENYID = i.ID AND tv.C_AKTIV = 'T' AND tv.TOROLT = 'F'
|
||||
WHERE (sch.name like 'KR[_]%[_]Schema' or sch.name = 'dbo')
|
||||
AND tbl.schema_id = 1
|
||||
AND tbl.name like 'T[_]%'
|
||||
AND (tbl.name not like 'T[_]DKT[_]%' OR tbl.name IN ('T_DKT_FILE', 'T_DKT_FELADAT', 'T_DKT_FELADATFILE'))
|
||||
AND tbl.name NOT IN ('T_ENTITYATTRIBUTEHISTORY', 'T_ENTITYHISTORY', 'T_ENTITYATTRIBUTEHISTORY_ARCHIVE', 'T_ENTITYBLOBVALUES', 'T_ENTITYBLOBVALUES_ARCHIVE')
|
||||
ORDER BY sch.name, tbl.name
|
||||
|
||||
OPEN @ViewCursor
|
||||
|
||||
FETCH NEXT FROM @ViewCursor
|
||||
INTO @tableName, @schemaName, @intezmenyId, @tanevId, @tanevColumn, @intezmenyColumn, @toroltColumn
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
|
||||
-- _OSSZES view-ok
|
||||
SET @sql = '
|
||||
CREATE OR ALTER VIEW [' + @schemaName + '].[' + @tableName + '_OSSZES] AS
|
||||
SELECT *
|
||||
FROM dbo.' + @tableName + CHAR(13)
|
||||
+ CASE WHEN @intezmenyColumn > '' AND @intezmenyId > 0 THEN CONCAT('WHERE ', @intezmenyColumn, ' = ', @intezmenyId, CHAR(13)) ELSE '' END
|
||||
|
||||
EXEC sp_executesql @sql
|
||||
IF @pDebugMode = 1 OR @@ERROR <> 0 PRINT @schemaName + '.' + @tableName + '_OSSZES (osszes)'
|
||||
IF @pDebugMode = 1 PRINT @sql
|
||||
|
||||
-- normál view-ok
|
||||
SET @sql = '
|
||||
CREATE OR ALTER VIEW [' + @schemaName + '].[' + @tableName + '] AS
|
||||
SELECT *
|
||||
FROM dbo.' + @tableName + CHAR(13)
|
||||
+ 'WHERE '
|
||||
+ CASE WHEN @intezmenyColumn > '' AND @intezmenyId > 0 THEN CONCAT(@intezmenyColumn, ' = ', @intezmenyId, CHAR(13), 'AND ') ELSE '' END
|
||||
+ CASE WHEN @tanevColumn > '' AND @tanevId > 0 THEN CONCAT(@tanevColumn + ' = ', @tanevId, CHAR(13), 'AND ') ELSE '' END
|
||||
+ CASE WHEN @toroltColumn > '' THEN 'TOROLT = ''F''' + CHAR(13) + 'AND ' ELSE '' END
|
||||
|
||||
IF RIGHT(@sql, 4) = 'AND ' SET @sql = LEFT(@sql, LEN(@sql) - 4)
|
||||
IF RIGHT(@sql, 6) = 'WHERE ' SET @sql = LEFT(@sql, LEN(@sql) - 6)
|
||||
IF @schemaName = 'dbo' SET @sql = null
|
||||
|
||||
EXEC sp_executesql @sql
|
||||
IF @pDebugMode = 1 OR @@ERROR <> 0 PRINT @schemaName + '.' + @tableName + ' (normal)'
|
||||
IF @pDebugMode = 1 PRINT @sql
|
||||
|
||||
FETCH NEXT FROM @ViewCursor
|
||||
INTO @tableName, @schemaName, @intezmenyId, @tanevId, @tanevColumn, @intezmenyColumn, @toroltColumn
|
||||
|
||||
END
|
||||
|
||||
CLOSE @ViewCursor
|
||||
|
||||
GO
|
Loading…
Add table
Add a link
Reference in a new issue