{"id":1116,"date":"2010-11-22T15:05:27","date_gmt":"2010-11-22T07:05:27","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=1116"},"modified":"2011-03-08T13:37:05","modified_gmt":"2011-03-08T05:37:05","slug":"usando-execute-statement-em-stored-procedures-no-interbase-xe","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/","title":{"rendered":"Usando Execute Statement em Stored Procedures no InterBase XE"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1119\" style=\"margin: 4px;\" title=\"Powered by InterBase XE\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/11\/InterBase_XE.jpg\" alt=\"InterBase XE\" width=\"334\" height=\"95\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/11\/InterBase_XE.jpg 334w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/11\/InterBase_XE-320x91.jpg 320w\" sizes=\"(max-width: 334px) 100vw, 334px\" \/><\/p>\n<p>Entre as v\u00e1rias novidades do InterBase XE est\u00e1 a possibilidade de montar SQLs dinamicamente em Stored Procedures atrav\u00e9s do comando EXECUTE STATEMENT, esse recurso \u00e9 uma solicita\u00e7\u00e3o antiga de muitos usu\u00e1rios, vamos ver como funciona.<\/p>\n<p>Existe tr\u00eas varia\u00e7\u00f5es do EXECUTE STATEMENT, aquela que n\u00e3o retorna nenhum registro ou dado, um registro ou um dado retornado e aquele retorna v\u00e1rios registros, vejamos alguns exemplos:<\/p>\n<h2>Nenhum registro ou dado retornado<\/h2>\n<p>A stored procedure abaixo (EXEC_STMT_NO_RET)\u00a0ir\u00e1 executar uma stored procedure em seu c\u00f3digo, o nome d\u00e1 stored procedure ser\u00e1 passado dinamicamente como par\u00e2metro.<\/p>\n<pre class=\"brush: sql\">CREATE PROCEDURE EXEC_STMT_NO_RET (proc_name varchar(20))\r\nAS\r\n  Declare Variable EMPNO INTEGER;\r\n  Declare Variable EXECSTMT VARCHAR(150);\r\nBEGIN\r\n\r\n   Select MAX(EMP_NO) from EMPLOYEE into EMPNO;\r\n\r\n   EXECSTMT = 'EXECUTE PROCEDURE' || proc_name || '( ' || cast (EMPNO as varchar(10)) || ')';\r\n\r\n   EXECUTE STATEMENT EXECSTMT;\r\n\r\nEND<\/pre>\n<p>A vari\u00e1vel EXECSTMT recebe o comando que dever\u00e1 ser executado pelo EXECUTE STATEMENT.<\/p>\n<h2>Apenas um registro retornado<\/h2>\n<p>A procedure abaixo (EXEC_STMT_COUNT) retornar a quantidade de registros de uma tabela, o nome da tabela \u00e9 passado como par\u00e2metro na hora da execu\u00e7\u00e3o da stored procedure, sendo que \u00e9 um SELECT COUNT sempre teremos o retorno como sendo um registro com uma coluna que traz o total de registros da tabela.<\/p>\n<pre class=\"brush: sql\">CREATE PROCEDURE EXEC_STMT_COUNT (TABLE_NAME VARCHAR(50))\r\nAS\r\nDeclar Variable MAXEMPNO INTEGER;\r\nBEGIN\r\n   EXECUTE STATEMENT 'SELECT COUNT(*) FROM ' || TABLE_NAME INTO :MAXEMPNO;\r\nEND<\/pre>\n<h2>Qualquer quantidade de registros retornado<\/h2>\n<p>Neste exemplo passamos a tabela e o nome do campo que queremos que seja retornado pela stored procedure, n\u00e3o sabemos quantos registros ser\u00e3o retornados, definimos dinamicamente todo o SQL.<\/p>\n<pre class=\"brush: sql\">CREATE PROCEDURE EXEC_STMT_ANY (TABLE_NAME VARCHAR(50), STR_FIELD VARCHAR(100) ) RETURNS (INT_RETVAR INTEGER)\r\nAS\r\n  Declare Variable IFIELD VARCHAR(100);\r\nBEGIN\r\n   FOR EXECUTE STATEMENT 'SELECT ' || STR_FIELD || ' FROM ' || TABLE_NAME INTO :IFIELD DO\r\n      \/\/ Implemente seu c\u00f3digo aqui para cada registro antes de retornar esta linha para o lado cliente\r\n\r\n      SUSPEND;\r\nEND<\/pre>\n<p>Esses s\u00e3o 3 exemplos de como utilizar EXECUTE STATEMENT, lembre-se que ao usar senten\u00e7as din\u00e2micas o mesmo ser\u00e1 preparado (Prepared) a cada execu\u00e7\u00e3o, isso ir\u00e1 impactar na performance da procedure, quando a senten\u00e7a j\u00e1 est\u00e1 definida na procedure isso n\u00e3o ocorre.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Entre as v\u00e1rias novidades do InterBase XE est\u00e1 a possibilidade de montar SQLs dinamicamente em Stored Procedures atrav\u00e9s do comando EXECUTE STATEMENT, esse recurso \u00e9 uma solicita\u00e7\u00e3o antiga de muitos usu\u00e1rios, vamos ver como funciona. Existe tr\u00eas varia\u00e7\u00f5es do EXECUTE STATEMENT, aquela que n\u00e3o retorna nenhum registro ou dado, um registro ou um dado retornado [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1119,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"","footnotes":""},"categories":[50],"tags":[177,59],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Usando Execute Statement em Stored Procedures no InterBase XE | Andreano Lanusse | Tecnologia e Desenvolvimento de Software<\/title>\n<meta name=\"description\" content=\"Entre as v\u00e1rias novidades do InterBase XE est\u00e1 a possibilidade de montar SQLs dinamicamente em Stored Procedures atrav\u00e9s do comando EXECUTE STATEMENT,\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Usando Execute Statement em Stored Procedures no InterBase XE | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"og:description\" content=\"Entre as v\u00e1rias novidades do InterBase XE est\u00e1 a possibilidade de montar SQLs dinamicamente em Stored Procedures atrav\u00e9s do comando EXECUTE STATEMENT,\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2010-11-22T07:05:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-03-08T05:37:05+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/11\/InterBase_XE.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"334\" \/>\n\t<meta property=\"og:image:height\" content=\"95\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"2 minutos\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/11\/InterBase_XE.jpg\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/11\/InterBase_XE.jpg\",\"width\":334,\"height\":95},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/\",\"name\":\"Usando Execute Statement em Stored Procedures no InterBase XE | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#primaryimage\"},\"datePublished\":\"2010-11-22T07:05:27+00:00\",\"dateModified\":\"2011-03-08T05:37:05+00:00\",\"description\":\"Entre as v\\u00e1rias novidades do InterBase XE est\\u00e1 a possibilidade de montar SQLs dinamicamente em Stored Procedures atrav\\u00e9s do comando EXECUTE STATEMENT,\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"Usando Execute Statement em Stored Procedures no InterBase XE\",\"datePublished\":\"2010-11-22T07:05:27+00:00\",\"dateModified\":\"2011-03-08T05:37:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#webpage\"},\"commentCount\":1,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#primaryimage\"},\"keywords\":[\"Banco de dados\",\"InterBase\"],\"articleSection\":[\"Banco de dados\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/usando-execute-statement-em-stored-procedures-no-interbase-xe\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/1116"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=1116"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/1116\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/1119"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=1116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=1116"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=1116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}