рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдЕрдХреНрд╕рд░ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдбреЗрдЯрд╛ рдХрд╣рд╛рдБ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ? рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ 50 рд╕реЗ рдЕрдзрд┐рдХ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рднрд░рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдпрджрд┐ рдЖрдк рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдФрд░ рд╕рдордЧреНрд░ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдореВрд▓реНрдп рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВ, рддреЛ рд╕рд┐рд░ рдкреБрд░рд╛рдиреЗ рдПрдПрдордбреА рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдардВрдбрд╛ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдЧрд░реНрдо рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░, .NET, C ++, Java, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдпрд╣ рдЖрд▓реЗрдЦ MS SQL рд╕рд░реНрд╡рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ T-SQL рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рдиреЛрдВ рд╕реЗ рднрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред
рдкрд░рд┐рдЪрдп
рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рдореБрдЭреЗ MS SQL рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рднрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдорд┐рд▓рд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреВрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХреЗрд╡рд▓ рдЯреА-рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рд▓рдВрдмреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рдЯреА-рдПрд╕рдХреНрдпреВрдПрд▓ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ
рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╣реИрдмрд░ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛, рдпрд╛ рдЗрд╕рдХреЗ Ctrl + A рдФрд░ Shift + Del рдХреЗ рд╕рд╛рде рдПрдХ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдВрдХ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рд╣реИред
рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ рдХреНрдпрд╛ рдерд╛:
- рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕;
- рд╕рднреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА (рдмрд╛рдж рдореЗрдВ рдкреАрдХреЗ) рдСрдЯреЛ-рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рд╣реИрдВ;
- рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ (рдмрд╛рдж рдореЗрдВ FK) рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рд╕рдВрдпреБрдХреНрдд PK рдпреБрдХреНрдд рддрд╛рд▓рд┐рдХрд╛рдПрдБ рд╣реИрдВред
рдЖрдкрдХреЛ рдЗрд╕ рд╕рдм рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рдерд╛:
- рд╡рд┐рд╢реЗрд╖рддрд╛ (рдХреЙрд▓рдо) рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ;
- рдСрдЯреЛ-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдлрд┐рд▓рд┐рдВрдЧ рдЫреЛрдбрд╝реЗрдВред
- рдпрд╛рджреГрдЪреНрдЫрд┐рдХ PK рдкреИрд░реЗрдВрдЯ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде FK рдЪрд╛рдЗрд▓реНрдб рдЯреЗрдмрд▓ рднрд░реЗрдВред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдкреВрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓реА:
- randomString - рдПрдХ рджреА рдЧрдИ рд▓рдВрдмрд╛рдИ рдХреЗ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдкреАрдврд╝реА;
- randomInt - рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд░реЗрдВрдЬ рд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдкреАрдврд╝реА;
- рдЙрддреНрдкрдиреНрдирдбрд╛рдЗрдЯрдмрд╛рдЗрдк - рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ (рд╕реНрддрдВрдн) рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╣рддрд╛ рд╣реИред
- InsertRandomData - рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЗрдирдкреБрдЯ рдХреЗрд╡рд▓ рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо рдФрд░ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд░рд╣рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред (рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ,
randomString
CREATE PROCEDURE [dbo].[randomString] @inputSize int, @outputRandomString nvarchar(max) output AS BEGIN -- . END;
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рдореИрдВ рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рдлреЛрд░рдо рд╕реЗ рдЖрдпрд╛ рдерд╛ред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдВрдмрд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ, рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдЖрдХрд╛рд░ рдХреЗ NVARCHAR (MAX) рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд░реНрдгреЛрдВ рдХреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЧрдВрднреАрд░ рд╕рдордп рд▓рд╛рдЧрдд рдирд╣реАрдВ рд╣реИред рд╣рдо рдФрд░ рдЖрдЧреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
randomInt
CREATE PROCEDURE [dbo].[randomInt] @inputSize int, @outputInteger int output AS BEGIN DECLARE @TEMP bigint SET @TEMP = SUBSTRING('999999999999999999',1,@inputSize) SET @outputInteger = (ABS(CHECKSUM(NewId())) % @TEMP) END
рдлрд╝рдВрдХреНрд╢рди рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ SUBSTRING рдХреЗ рд╕рд╛рде рдПрдХ рдЬрдЧрд╣), рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдореБрдЭреЗ рдЗрд╕рдХреА рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВред
generateDataByType
CREATE PROCEDURE [dbo].[generateDataByType] @tableName nvarchar(40), -- , @inputColumName nvarchar(40), -- , @inputType nvarchar(10), @inputSize int, @outputString nvarchar(max) output -- AS BEGIN DECLARE @isFK bit = 0; DECLARE @FKName NVARCHAR(MAX); DECLARE @ParentTable NVARCHAR(MAX); -- @tableName FK (ccu.table_name) (references_table) DECLARE columnsCursor1 CURSOR FOR SELECT kcu.column_name, ccu.table_name AS references_table FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu ON tc.constraint_catalog = kcu.constraint_catalog AND tc.constraint_schema = kcu.constraint_schema AND tc.constraint_name = kcu.constraint_name INNER JOIN information_schema.referential_constraints rc ON tc.constraint_catalog = rc.constraint_catalog AND tc.constraint_schema = rc.constraint_schema AND tc.constraint_name = rc.constraint_name AND tc.constraint_type = 'FOREIGN KEY' INNER JOIN information_schema.constraint_column_usage ccu ON rc.unique_constraint_catalog = ccu.constraint_catalog AND rc.unique_constraint_schema = ccu.constraint_schema AND rc.unique_constraint_name = ccu.constraint_name WHERE tc.table_name = @tableName OPEN columnsCursor1; FETCH NEXT FROM columnsCursor1 INTO @FKName,@ParentTable -- WHILE @@FETCH_STATUS = 0 BEGIN -- , @inputColumName IF (@inputColumName = @FKName) BEGIN SET @isFK = 1; -- true - FK . DECLARE @selectedPK NVARCHAR(MAX); DECLARE @params NVARCHAR(MAX); -- , SET @selectedPK = N'SELECT TOP 1 @outputString =' + @FKName + ' FROM ' + @ParentTable + ' ORDER BY NEWID(); '; SET @params = N'@FKName NVARCHAR(MAX), @ParentTable NVARCHAR(MAX), @outputString NVARCHAR(MAX) OUTPUT'; EXEC sp_executesql @selectedPK , @params, @FKName = @FKName, @ParentTable = @ParentTable, @outputString = @outputString OUTPUT; END FETCH NEXT FROM columnsCursor1 INTO @FKName,@ParentTable END; CLOSE columnsCursor1; DEALLOCATE columnsCursor1; -- . IF (@isFK <> 1) BEGIN IF (@inputType = 'nvarchar') BEGIN EXECUTE randomString @inputSize, @outputRandomString = @outputString OUTPUT ; END ELSE -- . END
рдФрд░ рдЗрд╕рд▓рд┐рдП, "рдореБрдЦреНрдп" рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдореВрд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЛ рднрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рд╢реНрд░реЗрдгреА рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЗрд╕ рдЦреЛрдЬ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдорд╛рдорд▓рд╛ рд╕рд┐рд╕реНрдЯреЗрдХреНрдЯ рдЯреЗрдмрд▓ рдФрд░ рд░реИрдВрдбрдо рд╕реЙрд░реНрдЯрд┐рдВрдЧ рд╕реЗ рд╕реЗрд▓реЗрдХреНрдЯ рдореЗрдВ рд╣реИред рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП: FK рдХреЗ рдмрд┐рдирд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 1 рдорд┐рд▓рд┐рдпрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 20 рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ, FK рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 1 рдорд┐рд▓рд┐рдпрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ 17 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЧрддреЗ рд╣реИрдВред рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рд╕рд╛рдл INSERT рдХреЗ рд╕рд╛рде рдПрдХ рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрдиреЗ рдореЗрдВ 6-10 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред
рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВ рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рдЗрд╖реНрдЯрддрдо рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрддрд╛ рдерд╛, рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХред
insertRandomData
CREATE PROCEDURE [dbo].[insertRandomData] @childTableName nvarchar(MAX), @insertRowCount int AS BEGIN DECLARE @i int = 0 /* */ DECLARE @columnName NVARCHAR(30); DECLARE @columnType NVARCHAR(10); DECLARE @columnLenght INT; DECLARE @columnUniq INT; /* */ DECLARE @insertQuery NVARCHAR(MAX); DECLARE @insertColumnsQuery NVARCHAR(MAX); DECLARE @insertValuesQuery VARCHAR(MAX); DECLARE @params NVARCHAR(MAX); SET @insertColumnsQuery = ''; SET @insertValuesQuery = ''; begin transaction WHILE (@i < @insertRowCount) BEGIN DECLARE columnsCursor CURSOR FOR ---------- @childTableName ----- SELECT all_columns.column_id, all_columns.name, systypes.name, all_columns.max_length FROM SYS.all_objects join SYS.all_columns on all_columns.object_id = all_objects.object_id join SYS.systypes on all_columns.system_type_id = systypes.xtype WHERE all_objects.name like @childTableName and all_objects.type = 'U' AND systypes.name <> 'sysname'/*- 2 ( )*/ ORDER BY all_columns.column_id; OPEN columnsCursor; -- , ID- ( ) FETCH NEXT FROM columnsCursor INTO @columnUniq, @columnName, @columnType, @columnLenght; FETCH NEXT FROM columnsCursor INTO @columnUniq, @columnName, @columnType, @columnLenght; DECLARE @tempLenght INT = 0; WHILE @@FETCH_STATUS = 0 BEGIN /* ( -1 30) , -1 MAX , 30 . */ IF(@columnLenght >= 0) BEGIN SET @tempLenght = @columnLenght; END ELSE BEGIN SET @tempLenght = 30; END -- INSERT, . SET @insertColumnsQuery = @insertColumnsQuery + @columnName + ', '; DECLARE @TEMPValues nvarchar(MAX) = '' --- generateStringByType, TEMPValues--- EXECUTE generateDataByType @childTableName, @columnName, @columnType, @tempLenght, @outputString = @TEMPValues OUTPUT -- INSERT, . SET @insertValuesQuery = @insertValuesQuery +'''' + @TEMPValues + ''',' FETCH NEXT FROM columnsCursor INTO @columnUniq, @columnName, @columnType, @columnLenght; END; -- INSERT SET @insertColumnsQuery = SUBSTRING(@insertColumnsQuery, 1, LEN(@insertColumnsQuery)-1); SET @insertValuesQuery = SUBSTRING(@insertValuesQuery,1, LEN(@insertValuesQuery)-1); -- . SET @insertQuery = N'INSERT INTO ' + @childTableName + N' (' + @insertColumnsQuery + N') VALUES (' + @insertValuesQuery + ') ;'; EXEC(@insertQuery); --
рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ "рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд" рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЖрдП рдЯреЗрдмрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд░реЗрдВрдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХрдИ рд╕реНрдкрд╖реНрдЯ рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдХреВрджрдиреЗ рд╕реЗ рдХрд┐ рдпрд╣ рдкреАрдХреЗ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЙрдкрд░реЛрдХреНрдд рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд▓реЗрдЦрдХ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрд╛ред рд▓реЗрдХрд┐рди рд╕рдореБрджрд╛рдп рдХреЛ рдЕрджрд╛рд▓рдд рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирд┐рд░реНрдгрдп рд╕рдордп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧрдВрднреАрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рднреА рд▓реЛрдЧ рдореБрдЭреЗ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ (рдпрджрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ) рдпрд╛ рдПрдХ рдЕрд▓рдЧ рд░рд╛рд╕реНрддрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред