<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>oracle Archivy - blog.vyoralek.cz</title>
	<atom:link href="https://blog.vyoralek.cz/stitek/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.vyoralek.cz/stitek/oracle/</link>
	<description>Tech témata, které mě baví</description>
	<lastBuildDate>Sun, 06 Aug 2017 07:49:31 +0000</lastBuildDate>
	<language>cs</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.3</generator>

<image>
	<url>https://i0.wp.com/blog.vyoralek.cz/wp-content/uploads/2019/10/cropped-512px-Circle-icons-pencil_2.svg_.png?fit=32%2C32&#038;ssl=1</url>
	<title>oracle Archivy - blog.vyoralek.cz</title>
	<link>https://blog.vyoralek.cz/stitek/oracle/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">133748570</site>	<item>
		<title>Vrácení hodnoty output parametru Oracle procedury do Javy</title>
		<link>https://blog.vyoralek.cz/programovani/vraceni-hodnoty-output-parametru-oracle-procedury-do-javy/</link>
					<comments>https://blog.vyoralek.cz/programovani/vraceni-hodnoty-output-parametru-oracle-procedury-do-javy/#respond</comments>
		
		<dc:creator><![CDATA[jvyoralek]]></dc:creator>
		<pubDate>Sat, 05 Aug 2017 15:52:45 +0000</pubDate>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[oracle]]></category>
		<guid isPermaLink="false">https://blog.vyoralek.cz/?p=34</guid>

					<description><![CDATA[<p>Potřeboval jsem vyřešit poněkud složitější SQL update o kterým by ostatním stačilo vědět co mají mít jako vstup a co by jim mohlo být vráceno. Na tenhle případ se úplně vybízela uložená procedura v Oraclu, které se ale u nás ve firmě zatím netěší velké oblibeně. Nezbývalo než být průkopníkem a pohledat řešení jak z Javy [&#8230;]</p>
<p>The post <a href="https://blog.vyoralek.cz/programovani/vraceni-hodnoty-output-parametru-oracle-procedury-do-javy/">Vrácení hodnoty output parametru Oracle procedury do Javy</a> appeared first on <a href="https://blog.vyoralek.cz">blog.vyoralek.cz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Potřeboval jsem vyřešit poněkud složitější SQL update o kterým by ostatním stačilo vědět co mají mít jako vstup a co by jim mohlo být vráceno. Na tenhle případ se úplně vybízela uložená procedura v Oraclu, které se ale u nás ve firmě zatím netěší velké oblibeně.</p>
<p>Nezbývalo než být průkopníkem a pohledat řešení jak z Javy Oracle SP zavolat a jak si poradit s čtením výstupního parametru.</p>
<p>Řešení není až tak složité, pokud poskládáte ty správné příkazy dohromady.</p>
<h2>Základní kameny</h2>
<ol>
<li><strong>prepareCall</strong> &#8211; který nám vytvoření statement do kterého se dají registrovat výstupní parametry, což je zásadní benefit oproti klasickému prepareStatement</li>
<li>vstupní parametry si napojíme přes <strong>setString</strong>, <strong>setInt</strong> atp..  s dvěmi parametry
<ol>
<li>název vstupního (IN) parametru v Oracle SP</li>
<li>hodnota předaná v parametru</li>
</ol>
</li>
<li>výstupní parametry se registrují pomocí <strong>registerOutParameter</strong> a opět budeme potřebovat dva parametry:
<ol>
<li>název výstupního (OUT) parametru v Oracle SP</li>
<li>datový typ který očekáváme z třídy java.sql.Types</li>
</ol>
</li>
<li>celé to odpálíme pomocí <strong>execute()</strong></li>
<li>vystupní parametry si přečteme z naplněného statementu pomocí <strong>getInt</strong>, <strong>getString</strong> atp.. pouze s jedním parametrem, který je názvem výstupního parametru</li>
</ol>
<pre class="eckosc_syntax eckosc_syntax_theme_dark"><code data-language="java">package com.company;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.CallableStatement;
import java.sql.Types;
import java.sql.DriverManager;

public class Main {

    public static void main(String[] args) {

        Connection connection = null;

        try {
            connection = DriverManager.getConnection("jdbc:oracle:thin:oracleip:sid", "user", "pswd");
            CallableStatement cstmt = connection.prepareCall("{call INTEGRATION.deact_items_if_missing_in_st(?, ?)}");
            cstmt.setString("p_entity_type", "VProductSalesData");
            cstmt.registerOutParameter("po_affected_item", Types.INTEGER);
            cstmt.execute();
            int value = cstmt.getInt("po_affected_item");
            System.out.println("Value is " + value);
        } catch (SQLException e) {
            System.out.println("Error: " + e.getMessage());
        } finally {
            if (connection := null) {
                 connection.close();
            }
        }
    }
}
</code></pre>
<p>Uložená procedura v Oraclu pak může vypadat nějak takto:</p>
<pre class="eckosc_syntax eckosc_syntax_theme_dark"><code>PROCEDURE deact_matsales_if_not_in_st(p_entity_type varchar, po_affected_items OUT INT) 
IS 
BEGIN 
    Update V_VPRODUCTSALESDATA ... ; 
    po_affected_items := SQL%ROWCOUNT; 
END deact_matsales_if_not_in_st;</code></pre>
<p>The post <a href="https://blog.vyoralek.cz/programovani/vraceni-hodnoty-output-parametru-oracle-procedury-do-javy/">Vrácení hodnoty output parametru Oracle procedury do Javy</a> appeared first on <a href="https://blog.vyoralek.cz">blog.vyoralek.cz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.vyoralek.cz/programovani/vraceni-hodnoty-output-parametru-oracle-procedury-do-javy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">34</post-id>	</item>
	</channel>
</rss>
