{"id":23852,"date":"2023-04-28T20:38:17","date_gmt":"2023-04-28T19:38:17","guid":{"rendered":"https:\/\/developers.primaverabss.com\/en\/forum\/query-em-bulk-para-v10\/"},"modified":"2023-05-02T10:54:47","modified_gmt":"2023-05-02T09:54:47","slug":"query-em-bulk-para-v10","status":"publish","type":"cma_thread","link":"https:\/\/developers.ila.cegid.com\/en\/forum\/query-em-bulk-para-v10\/","title":{"rendered":"Bulk em sql para v10"},"content":{"rendered":"<p>Boas,<\/p>\n<p>Deixo aqui um c\u00f3digo em sql que poder\u00e1 ter interesse para algu\u00e9m. \u00c9 um bulk em sql para fazer queries \u00e0s base de dados, neste caso para testar se em alguma base de dados h\u00e1 tabelas ( daquelas comuns) com registos diferentes. Num gabinete, e eu tenho o m\u00f3dulo de gest\u00e3o de gabinetes, gosto de ter essas tabelas sincronizadas com a PRIZSCV10, e \u00e0s vezes com a falta de tempo, cria-se qualquer coisa e n\u00e3o corro logo o opera\u00e7\u00f5es em lote para sincronizar, e depois vai-se da mem\u00f3ria.<\/p>\n<p>Rudimentar mas funciona, executo directamente no Managment Studio .<\/p>\n<p>Acrescento que agora tamb\u00e9m se conseguem algumas coisas interessantes em Power Query (excel ou power bi), no power query tamb\u00e9m se consegue aceder em lote \u00e0s bases de dados.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">-- Executa um select \u00e0s tabelas, recursivamente a todas as empresas\r\n-- 16 Jan 2022\r\n\r\n\/* NOTAS\r\n\r\nQuery Options --&gt; Advanced --&gt; SET NOCOUNT\r\nResult --&gt; Text --&gt; xScroll --&gt; Separate tab\r\n\r\n*\/\r\n\r\n----- Nome da tabela a comparar\r\nDECLARE @NomeTabela as VARCHAR(50)\r\nSET @NomeTabela = 'Tabela'\r\n\r\n-- Inicializa vari\u00e1veis\r\nDECLARE @Counter INT;  \r\nSET @Counter = 1; \r\n\r\nDECLARE @Totais INT;\r\nSET @Totais = 0\r\n\r\nDECLARE @SQL NVARCHAR(max);\r\nDECLARE @Contagem NVARCHAR(max);\r\n\r\ndeclare @cols varchar(max), @query varchar(max);\r\nSELECT  @cols = STUFF\r\n    (\r\n        ( \r\n            SELECT DISTINCT '], [' + name\r\n            FROM sys.columns\r\n            where object_id = (\r\n                select top 1 object_id from sys.objects\r\n                where name = @NomeTabela\r\n            )\r\n            and name not in ('DataUltimaActualizacao', 'VersaoUltAct')\r\n            FOR XML PATH('')\r\n        ), 1, 2, ''\r\n    ) + ']';\r\n\r\n-- Conta o n\u00ba de linhas\r\n\r\n-- Lista das empresas a usar (5)\r\nPRIZSCV10:  \r\n    USE PRIZSCV10\r\n    GOTO LABEL1\t\t\r\nEMP01:\r\n    USE PRI101\r\n    GOTO LABEL1\r\nEMP02:\r\n    USE PRI102\r\n    GOTO LABEL1\r\nEMP03:\r\n    USE PRI104\r\n    GOTO LABEL1\r\nEMP04:\r\n    USE PRI105\r\n    GOTO LABEL1\r\n\r\n\r\n-- Tabelas a seleccionar\r\nLABEL1:\r\n\r\nSET @SQL = N'\r\nSELECT '+@cols+' FROM PRIZSCV10..'+ @NomeTabela +\r\n' EXCEPT\r\nSELECT '+@cols+' FROM '+ @NomeTabela\r\n\r\nEXEC(@SQL)\r\n\r\nIF @COUNTER = 1\r\nBEGIN\r\n    PRINT 'Total de linhas:'\r\n    SET @CONTAGEM = N'SELECT * FROM PRIZSCV10..'+ @NomeTabela\r\n    EXEC (@cONTAGEM)\r\n    PRINT @@ROWCOUNT\r\nEND\r\n\r\nSET @Totais = @@ROWCOUNT + @Totais\r\n\r\n-- C\u00f3digo\r\n\r\n-- C\u00f3digo a escutar em loop\r\nWHILE @Counter &lt;= 6\r\nBEGIN \r\n    SET @Counter = @Counter + 1; \r\n    SELECT db_name() AS 'C\u00f3digo da Empresa'\r\n    IF @Counter = 1 \r\n        GOTO PRIZSCV10\r\n    IF @Counter = 2 \r\n        GOTO EMP01\r\n    IF @Counter = 3 \r\n        GOTO EMP02\r\n    IF @Counter = 4\r\n        GOTO EMP03\r\n    IF @Counter = 5 \r\n        GOTO EMP04\r\n    \r\nEND;\r\n\r\nPRINT 'TOTAL de registos diferentes -------------------------------------------------------'\r\nPRINT @Totais\r\n\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Boas, Deixo aqui um c\u00f3digo em sql que poder\u00e1 ter interesse para algu\u00e9m. \u00c9 um bulk em sql para fazer queries \u00e0s base de dados, neste caso para testar se em alguma base de dados h\u00e1 tabelas ( daquelas comuns) com registos diferentes. Num gabinete, e eu tenho o m\u00f3dulo de gest\u00e3o de gabinetes, gosto [&hellip;]<\/p>\n","protected":false},"author":958,"featured_media":0,"template":"","tags":[],"cma_category":[],"cma_difficulty_level":[],"forum-tag":[367,374],"class_list":["post-23852","cma_thread","type-cma_thread","status-publish","hentry","forum-tag-database","forum-tag-v10-en","forum-languages-pt"],"_links":{"self":[{"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/cma_thread\/23852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/cma_thread"}],"about":[{"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/types\/cma_thread"}],"author":[{"embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/users\/958"}],"wp:attachment":[{"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/media?parent=23852"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/tags?post=23852"},{"taxonomy":"cma_category","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/cma_category?post=23852"},{"taxonomy":"cma_difficulty_level","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/cma_difficulty_level?post=23852"},{"taxonomy":"forum-tag","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/forum-tag?post=23852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}