{"id":2585,"date":"2011-01-25T11:09:51","date_gmt":"2011-01-25T14:09:51","guid":{"rendered":"http:\/\/www.viamais.net\/blog\/?p=2585"},"modified":"2011-01-25T11:09:51","modified_gmt":"2011-01-25T14:09:51","slug":"cursores-dinamicos-com-plsql","status":"publish","type":"post","link":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/","title":{"rendered":"Cursores din\u00e2micos com PL\/SQL"},"content":{"rendered":"<p>[ad#texto]<br \/>\nSe voc\u00ea ainda \u00e9 iniciante em <strong>PL\/SQL<\/strong> provavelmente ainda n\u00e3o precisou utilizar, mas tenha certeza, em algum momento a sua aplica\u00e7\u00e3o ir\u00e1 precisar que o cursor seja montado em <strong>tempo de execu\u00e7\u00e3o<\/strong> e quando esse momento chegar voc\u00ea ter\u00e1 que montar um <strong>cursor din\u00e2mico<\/strong>.<\/p>\n<p>Para os iniciantes que ainda n\u00e3o entenderam o que \u00e9, suponha que voc\u00ea tenha um cursor fixo no c\u00f3digo:<\/p>\n<pre lang=\"sql\">cursor c_teste is\r\nselect * from sua_tabela where seu_campo = 22<\/pre>\n<p>Mas e se em algum determinado momento esse <strong>cursor<\/strong> devesse ser alterado, montar dezenas de <strong>cursor<\/strong> e ir empilhando tudo dentro de um monte de <strong>if<\/strong> com certeza n\u00e3o ser\u00e1 a melhor op\u00e7\u00e3o, embora tamb\u00e9m funcione. \u00c9 a\u00ed que entra o <strong>cursor din\u00e2mico<\/strong> no <strong>PL\/SQL<\/strong>.<\/p>\n<p>Vamos l\u00e1:<\/p>\n<pre lang=\"sql\">-- Declarando a vari\u00e1vel que ir\u00e1 armazenar a string com o comando SQL montado para execu\u00e7\u00e3o\r\nvar_cursor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  varchar2(4000);\r\n\r\nvar_cur\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 number;\r\nvar_exec\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 number;\r\nvar_retor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 number;\r\nvar_1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0varchar2(30);\r\nvar_2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0number;\r\n\r\nbegin\r\n\r\nvar_cursor := \u2018select * from sua_tabela \u2019;\r\n\r\nif var_controle = 1 then\r\n var_cursor := var_cursor || \u2018where seu_campo = 22\u2019;\r\nelse\r\n var_cursor := var_cursor || \u2018where seu_campo = 25\u2019;\r\nend if;\r\n\r\n-- Executar cursor dinamico\r\n-- Cria cursor din\u00e2mico para execu\u00e7\u00e3o\r\nvar_cur := dbms_sql.open_cursor;\r\n\r\n-- Comando Parse do SQL gerado\r\ndbms_sql.parse(var_cur, \u00a0var_cursor, 1);\r\n\r\n-- Colunas de retorno\r\ndbms_sql.define_column(var_cur, 1, var_1);\r\ndbms_sql.define_column(var_cur, 2, var_2);\r\n\r\n-- Executa o cursor\r\nvar_exec := dbms_sql.execute(var_cur);\r\n\r\nloop\r\n -- Retorna os resultados\r\n -- Verifica se h\u00e1 alguma linha de retorno do cursor\r\n var_retor := dbms_sql.fetch_rows(var_cur);\r\n EXIT WHEN var_retor = 0;\r\n\r\n -- Carrega vari\u00e1vel com o retorno do cursor\r\n dbms_sql.column_value(var_cur, 1, var_1);\r\n dbms_sql.column_value(var_cur, 2, var_2);\r\nend loop;\r\nend;<\/pre>\n<p>\u00c9 isso, o c\u00f3digo <strong>PL\/SQL<\/strong> ficou um pouco longo, mas d\u00e1 para entender a l\u00f3gica de utiliza\u00e7\u00e3o e adapta-lo a sua necessidade.<\/p>\n<p>Depois de adquirir pr\u00e1tica na utiliza\u00e7\u00e3o de <strong>cursores din\u00e2micos<\/strong> no <strong>PL\/SQL<\/strong> ver\u00e1 que ele poupa bastante tempo em <strong>desenvolvimento<\/strong>, deixando a sua aplica\u00e7\u00e3o mais robusta e perform\u00e1tica com o <strong>SQL<\/strong> sendo montado em tempo de execu\u00e7\u00e3o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad#texto] Se voc\u00ea ainda \u00e9 iniciante em PL\/SQL provavelmente ainda n\u00e3o precisou utilizar, mas tenha<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[26],"tags":[75,39],"class_list":["post-2585","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-oracle","tag-plsql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cursores din\u00e2micos com PL\/SQL -<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cursores din\u00e2micos com PL\/SQL -\" \/>\n<meta property=\"og:description\" content=\"[ad#texto] Se voc\u00ea ainda \u00e9 iniciante em PL\/SQL provavelmente ainda n\u00e3o precisou utilizar, mas tenha\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/\" \/>\n<meta property=\"og:site_name\" content=\"ViamaisBLOG\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/viamais.viablog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/viamais.viablog\" \/>\n<meta property=\"article:published_time\" content=\"2011-01-25T14:09:51+00:00\" \/>\n<meta name=\"author\" content=\"Petter Rafael\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@petterrafael\" \/>\n<meta name=\"twitter:site\" content=\"@petterrafael\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Petter Rafael\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/cursores-dinamicos-com-plsql\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/cursores-dinamicos-com-plsql\\\/\"},\"author\":{\"name\":\"Petter Rafael\",\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/#\\\/schema\\\/person\\\/a13697c83eb9e9fe998636b42c020ec2\"},\"headline\":\"Cursores din\u00e2micos com PL\\\/SQL\",\"datePublished\":\"2011-01-25T14:09:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/cursores-dinamicos-com-plsql\\\/\"},\"wordCount\":195,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/#organization\"},\"keywords\":[\"Oracle\",\"PL\\\/SQL\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.viamais.net\\\/blog\\\/cursores-dinamicos-com-plsql\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/cursores-dinamicos-com-plsql\\\/\",\"url\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/cursores-dinamicos-com-plsql\\\/\",\"name\":\"Cursores din\u00e2micos com PL\\\/SQL -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/#website\"},\"datePublished\":\"2011-01-25T14:09:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/cursores-dinamicos-com-plsql\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.viamais.net\\\/blog\\\/cursores-dinamicos-com-plsql\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/cursores-dinamicos-com-plsql\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle\",\"item\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/category\\\/oracle\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cursores din\u00e2micos com PL\\\/SQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/\",\"name\":\"ViamaisBLOG\",\"description\":\"Blog de tecnologia com dicas para melhorar sua internet e as novidades de gadgets e aplicativos.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/#organization\",\"name\":\"Viablog\",\"url\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/www.viamais.net\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/10\\\/logo_viamais.png?fit=150%2C150&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/www.viamais.net\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/10\\\/logo_viamais.png?fit=150%2C150&ssl=1\",\"width\":150,\"height\":150,\"caption\":\"Viablog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/viamais.viablog\",\"https:\\\/\\\/x.com\\\/petterrafael\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/#\\\/schema\\\/person\\\/a13697c83eb9e9fe998636b42c020ec2\",\"name\":\"Petter Rafael\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ec1d50795aefe5170d97a2816386714d30fce28bcb746631048cc673d70f8443?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ec1d50795aefe5170d97a2816386714d30fce28bcb746631048cc673d70f8443?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ec1d50795aefe5170d97a2816386714d30fce28bcb746631048cc673d70f8443?s=96&d=identicon&r=g\",\"caption\":\"Petter Rafael\"},\"description\":\"Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Al\u00e9m dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache\\\/Tomcat, Photoshop, Arte &amp; Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programa\u00e7\u00e3o e tecnologia.\",\"sameAs\":[\"http:\\\/\\\/www.viamais.net\\\/blog\",\"https:\\\/\\\/www.facebook.com\\\/viamais.viablog\"],\"url\":\"https:\\\/\\\/www.viamais.net\\\/blog\\\/author\\\/petterrafael\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cursores din\u00e2micos com PL\/SQL -","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/","og_locale":"pt_BR","og_type":"article","og_title":"Cursores din\u00e2micos com PL\/SQL -","og_description":"[ad#texto] Se voc\u00ea ainda \u00e9 iniciante em PL\/SQL provavelmente ainda n\u00e3o precisou utilizar, mas tenha","og_url":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/","og_site_name":"ViamaisBLOG","article_publisher":"https:\/\/www.facebook.com\/viamais.viablog","article_author":"https:\/\/www.facebook.com\/viamais.viablog","article_published_time":"2011-01-25T14:09:51+00:00","author":"Petter Rafael","twitter_card":"summary_large_image","twitter_creator":"@petterrafael","twitter_site":"@petterrafael","twitter_misc":{"Escrito por":"Petter Rafael","Est. tempo de leitura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/#article","isPartOf":{"@id":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/"},"author":{"name":"Petter Rafael","@id":"https:\/\/www.viamais.net\/blog\/#\/schema\/person\/a13697c83eb9e9fe998636b42c020ec2"},"headline":"Cursores din\u00e2micos com PL\/SQL","datePublished":"2011-01-25T14:09:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/"},"wordCount":195,"commentCount":2,"publisher":{"@id":"https:\/\/www.viamais.net\/blog\/#organization"},"keywords":["Oracle","PL\/SQL"],"articleSection":["Oracle"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/","url":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/","name":"Cursores din\u00e2micos com PL\/SQL -","isPartOf":{"@id":"https:\/\/www.viamais.net\/blog\/#website"},"datePublished":"2011-01-25T14:09:51+00:00","breadcrumb":{"@id":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.viamais.net\/blog\/cursores-dinamicos-com-plsql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.viamais.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle","item":"https:\/\/www.viamais.net\/blog\/category\/oracle\/"},{"@type":"ListItem","position":3,"name":"Cursores din\u00e2micos com PL\/SQL"}]},{"@type":"WebSite","@id":"https:\/\/www.viamais.net\/blog\/#website","url":"https:\/\/www.viamais.net\/blog\/","name":"ViamaisBLOG","description":"Blog de tecnologia com dicas para melhorar sua internet e as novidades de gadgets e aplicativos.","publisher":{"@id":"https:\/\/www.viamais.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.viamais.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.viamais.net\/blog\/#organization","name":"Viablog","url":"https:\/\/www.viamais.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.viamais.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/www.viamais.net\/blog\/wp-content\/uploads\/2014\/10\/logo_viamais.png?fit=150%2C150&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.viamais.net\/blog\/wp-content\/uploads\/2014\/10\/logo_viamais.png?fit=150%2C150&ssl=1","width":150,"height":150,"caption":"Viablog"},"image":{"@id":"https:\/\/www.viamais.net\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/viamais.viablog","https:\/\/x.com\/petterrafael"]},{"@type":"Person","@id":"https:\/\/www.viamais.net\/blog\/#\/schema\/person\/a13697c83eb9e9fe998636b42c020ec2","name":"Petter Rafael","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/ec1d50795aefe5170d97a2816386714d30fce28bcb746631048cc673d70f8443?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ec1d50795aefe5170d97a2816386714d30fce28bcb746631048cc673d70f8443?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ec1d50795aefe5170d97a2816386714d30fce28bcb746631048cc673d70f8443?s=96&d=identicon&r=g","caption":"Petter Rafael"},"description":"Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Al\u00e9m dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache\/Tomcat, Photoshop, Arte &amp; Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programa\u00e7\u00e3o e tecnologia.","sameAs":["http:\/\/www.viamais.net\/blog","https:\/\/www.facebook.com\/viamais.viablog"],"url":"https:\/\/www.viamais.net\/blog\/author\/petterrafael\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p5Ih4c-FH","jetpack-related-posts":[{"id":3253,"url":"https:\/\/www.viamais.net\/blog\/verificando-cursores-no-plsql\/","url_meta":{"origin":2585,"position":0},"title":"Verificando cursores no PL\/SQL","author":"Petter Rafael","date":"14\/12\/2011","format":false,"excerpt":"[ad#texto] Todo desenvolvedor PL\/SQL utiliza constantemente cursores, seja pela praticidade, ou seja, pela necessidade mesmo, mas existe um pequeno detalhe que constantemente vejo desenvolvedores Oracle (mesmo os mais experientes) esquecerem: validar se o cursor j\u00e1 n\u00e3o est\u00e1 aberto. Caso a sua aplica\u00e7\u00e3o, por um descuido tente abrir um cursor j\u00e1\u2026","rel":"","context":"Em &quot;Oracle&quot;","block_context":{"text":"Oracle","link":"https:\/\/www.viamais.net\/blog\/category\/oracle\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2002,"url":"https:\/\/www.viamais.net\/blog\/select-do-bloco-com-o-plsql-developer\/","url_meta":{"origin":2585,"position":1},"title":"Select do bloco com o PL\/SQL Developer","author":"Petter Rafael","date":"12\/04\/2010","format":false,"excerpt":"[ad#texto] Muitos desenvolvedores por comodidade ou por h\u00e1bito utilizam v\u00e1rias instru\u00e7\u00f5es select (ou outras instru\u00e7\u00f5es) dentro da mesma janela \"SQL Windows\", por\u00e9m para executar a select certa \u00e9 preciso grifa-la para que o PL\/SQL Developer n\u00e3o tente executar todas as instru\u00e7\u00f5es na seq\u00fc\u00eancia o que ir\u00e1 resultar em erros. Em\u2026","rel":"","context":"Em &quot;Oracle&quot;","block_context":{"text":"Oracle","link":"https:\/\/www.viamais.net\/blog\/category\/oracle\/"},"img":{"alt_text":"Configura\u00e7\u00e3o do PL\/SQL Developer","src":"https:\/\/i0.wp.com\/www.viamais.net\/blog\/wp-content\/uploads\/2010\/04\/Capturar1-300x251.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":4578,"url":"https:\/\/www.viamais.net\/blog\/contando-a-quantidade-de-registros-de-um-cursor\/","url_meta":{"origin":2585,"position":2},"title":"Contando a quantidade de registros de um cursor","author":"Petter Rafael","date":"23\/01\/2013","format":false,"excerpt":"[ad#texto] Uma coisa que geralmente o pessoal reclama no PL\/SQL \u00e9 a falta de um comando que retorne o total de linhas retornadas em um cursor, sem a necessidade de realizar um FETCH, afinal lembrem-se, performance acima de tudo. Embora a Oracle n\u00e3o tenha colocado nada diretamente a partir da\u2026","rel":"","context":"Em &quot;Dicas&quot;","block_context":{"text":"Dicas","link":"https:\/\/www.viamais.net\/blog\/category\/dicas\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4875,"url":"https:\/\/www.viamais.net\/blog\/ordenando-uma-pl-table-na-criacao-do-indice\/","url_meta":{"origin":2585,"position":3},"title":"Ordenando uma PL Table na cria\u00e7\u00e3o do \u00edndice","author":"Petter Rafael","date":"20\/03\/2013","format":false,"excerpt":"[ad#texto] J\u00e1 vimos duas formas de ordenar uma PL Table no Oracle, uma utilizando um TYPE f\u00edsico no banco de dados e outro sem esta necessidade, mas existe uma forma melhor? Sim, existe. Afinal o PL\/SQL \u00e9 uma caixinha de surpresas. A sa\u00edda ent\u00e3o \u00e9 for\u00e7ar os registros serem ordenados\u2026","rel":"","context":"Em &quot;Dicas&quot;","block_context":{"text":"Dicas","link":"https:\/\/www.viamais.net\/blog\/category\/dicas\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":975,"url":"https:\/\/www.viamais.net\/blog\/multiplos-insert-no-oracle\/","url_meta":{"origin":2585,"position":4},"title":"Multiplos insert no Oracle","author":"Petter Rafael","date":"06\/04\/2009","format":false,"excerpt":"Algumas vezes nos deparamos para fazer a inser\u00e7\u00e3o de dados oriundos de um select no Oracle, seja simplesmente em PL\/SQL ou no Forms. Fazer um cursor e percorrer o loop e ir inserindo um a um \u00e9 um tanto inc\u00f4modo pois o grande n\u00famero de inser\u00e7\u00f5es no banco de dados\u2026","rel":"","context":"Em &quot;Oracle&quot;","block_context":{"text":"Oracle","link":"https:\/\/www.viamais.net\/blog\/category\/oracle\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5756,"url":"https:\/\/www.viamais.net\/blog\/descobrindo-o-numero-de-cursores-ativos-no-oracle\/","url_meta":{"origin":2585,"position":5},"title":"Descobrindo o n\u00famero de cursores ativos no Oracle","author":"Petter Rafael","date":"12\/12\/2013","format":false,"excerpt":"[ad#texto] Diversas vezes nos deparamos com a d\u00favida de quantas sess\u00f5es est\u00e3o ativas no Oracle. Isso \u00e9 muito f\u00e1cil de verificar, veja a query abaixo: select s.username, s.program, count(a.sid), sum(a.value) Open_Cursors from v$sesstat a, v$statname b, v$session s where a.statistic# = b.statistic# and s.sid=a.sid and b.name = 'opened cursors current'\u2026","rel":"","context":"Em &quot;Dicas&quot;","block_context":{"text":"Dicas","link":"https:\/\/www.viamais.net\/blog\/category\/dicas\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.viamais.net\/blog\/wp-json\/wp\/v2\/posts\/2585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.viamais.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.viamais.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.viamais.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.viamais.net\/blog\/wp-json\/wp\/v2\/comments?post=2585"}],"version-history":[{"count":0,"href":"https:\/\/www.viamais.net\/blog\/wp-json\/wp\/v2\/posts\/2585\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.viamais.net\/blog\/wp-json\/wp\/v2\/media?parent=2585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.viamais.net\/blog\/wp-json\/wp\/v2\/categories?post=2585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.viamais.net\/blog\/wp-json\/wp\/v2\/tags?post=2585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}