<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Question Re: ASA: implicit commit after each call proxy procedure in Technology Q&amp;A</title>
    <link>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849979#M4880822</link>
    <description>&lt;P&gt;To determine if the call really is auto-committing, try creating a second Oracle procedure containing a rollback and calling that via a proxy procedure right after the call t_proxy_to_oracle( 'qwerty123' );&lt;/P&gt;
&lt;P&gt;FWIW a SQL Anywhere 12 remote database does not exhibit this behavior; i.e., the rollback is done on the remote database.&lt;/P&gt;
&lt;P&gt;AFAIK Oracle does not auto-commit itself, it's a client thing, which in this case might be the ODBC driver.&lt;/P&gt;</description>
    <pubDate>Sun, 30 Oct 2011 11:39:51 GMT</pubDate>
    <dc:creator>Breck_Carter</dc:creator>
    <dc:date>2011-10-30T11:39:51Z</dc:date>
    <item>
      <title>ASA: implicit commit after each call proxy procedure</title>
      <link>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaq-p/13849978</link>
      <description>&lt;P&gt;Looks like a call of proxy procedure in any case runs in autocommit mode on remote server side.
How to call a procedure in a distributed transaction mode?&lt;/P&gt;
&lt;H2&gt;Test Environment (tested in each one combination):&lt;/H2&gt;
&lt;P&gt;Operation System:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows Server Standart 2008 x64&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;SQL Anywhere Server:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ASA x64 9.0.2.3951&lt;/LI&gt;
&lt;LI&gt;ASA x64 10.0.1.4239&lt;/LI&gt;
&lt;LI&gt;ASA x64 11.0.1.2680&lt;/LI&gt;
&lt;LI&gt;ASA x64 12.0.1.3457&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Remote Database:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Oracle 10 / 11&lt;/LI&gt;
&lt;LI&gt;Sybase ASE 12.5 / 15.5&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Oracle ODBC driver:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;iAnywhere Solutions 12 - Oracle&lt;/LI&gt;
&lt;LI&gt;Oracle in OraClient11g_home1&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Test SQL on the Oracle:&lt;/H2&gt;
&lt;DIV class="codehilite"&gt;&lt;PRE&gt;&lt;SPAN class="n"&gt;create&lt;/SPAN&gt; &lt;SPAN class="n"&gt;table&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_remote_call_param&lt;/SPAN&gt; &lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="n"&gt;param_value&lt;/SPAN&gt; &lt;SPAN class="n"&gt;varchar&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="mi"&gt;32&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt; &lt;SPAN class="p"&gt;);&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;create&lt;/SPAN&gt; &lt;SPAN class="n"&gt;procedure&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_remote_proc&lt;/SPAN&gt; &lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="n"&gt;param&lt;/SPAN&gt; &lt;SPAN class="n"&gt;varchar2&lt;/SPAN&gt; &lt;SPAN class="p"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;is&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;begin&lt;/SPAN&gt;
    &lt;SPAN class="n"&gt;insert&lt;/SPAN&gt; &lt;SPAN class="n"&gt;into&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_remote_call_param&lt;/SPAN&gt; &lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="n"&gt;param_value&lt;/SPAN&gt; &lt;SPAN class="p"&gt;)&lt;/SPAN&gt; &lt;SPAN class="nb"&gt;values&lt;/SPAN&gt; &lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="n"&gt;param&lt;/SPAN&gt; &lt;SPAN class="p"&gt;);&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;end&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;/DIV&gt;


&lt;H2&gt;Test SQL on the ASA:&lt;/H2&gt;
&lt;DIV class="codehilite"&gt;&lt;PRE&gt;&lt;SPAN class="n"&gt;create&lt;/SPAN&gt; &lt;SPAN class="n"&gt;server&lt;/SPAN&gt; &lt;SPAN class="s"&gt;"oracle_odbc"&lt;/SPAN&gt; &lt;SPAN class="n"&gt;class&lt;/SPAN&gt; &lt;SPAN class="s"&gt;'ORAODBC'&lt;/SPAN&gt; &lt;SPAN class="n"&gt;using&lt;/SPAN&gt; &lt;SPAN class="s"&gt;'oracle_odbc_x64'&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;create&lt;/SPAN&gt; &lt;SPAN class="n"&gt;existing&lt;/SPAN&gt; &lt;SPAN class="n"&gt;table&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_call_param&lt;/SPAN&gt; &lt;SPAN class="n"&gt;at&lt;/SPAN&gt; &lt;SPAN class="s"&gt;'oracle_odbc;;dbname;t_remote_call_param'&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;create&lt;/SPAN&gt; &lt;SPAN class="n"&gt;procedure&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_to_oracle&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="nv"&gt;@param&lt;/SPAN&gt; &lt;SPAN class="n"&gt;varchar&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="mi"&gt;32&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt; &lt;SPAN class="p"&gt;)&lt;/SPAN&gt; &lt;SPAN class="n"&gt;at&lt;/SPAN&gt; &lt;SPAN class="s"&gt;'oracle_odbc;;dbname;t_remote_proc'&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="nb"&gt;select&lt;/SPAN&gt; &lt;SPAN class="o"&gt;*&lt;/SPAN&gt; &lt;SPAN class="n"&gt;from&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_call_param&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="o"&gt;/*&lt;/SPAN&gt;
    &lt;SPAN class="n"&gt;output&lt;/SPAN&gt; &lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="mi"&gt;0&lt;/SPAN&gt; &lt;SPAN class="n"&gt;rows&lt;/SPAN&gt; &lt;SPAN class="n"&gt;selected&lt;/SPAN&gt;&lt;SPAN class="p"&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/SPAN&gt;
    &lt;SPAN class="o"&gt;-------&lt;/SPAN&gt;
    &lt;SPAN class="n"&gt;PARAM_VALUE&lt;/SPAN&gt;
    &lt;SPAN class="o"&gt;-----------&lt;/SPAN&gt;
&lt;SPAN class="o"&gt;*/&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;begin&lt;/SPAN&gt; &lt;SPAN class="n"&gt;tran&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;call&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_to_oracle&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="s"&gt;'qwerty123'&lt;/SPAN&gt; &lt;SPAN class="p"&gt;);&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;rollback&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="nb"&gt;select&lt;/SPAN&gt; &lt;SPAN class="o"&gt;*&lt;/SPAN&gt; &lt;SPAN class="n"&gt;from&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_call_param&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="o"&gt;/*&lt;/SPAN&gt;
    &lt;SPAN class="n"&gt;output&lt;/SPAN&gt; &lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="mi"&gt;1&lt;/SPAN&gt; &lt;SPAN class="n"&gt;rows&lt;/SPAN&gt; &lt;SPAN class="n"&gt;selected&lt;/SPAN&gt;&lt;SPAN class="p"&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/SPAN&gt;
    &lt;SPAN class="o"&gt;-------&lt;/SPAN&gt;
    &lt;SPAN class="n"&gt;PARAM_VALUE&lt;/SPAN&gt;
    &lt;SPAN class="o"&gt;-----------&lt;/SPAN&gt;
    &lt;SPAN class="n"&gt;qwerty123&lt;/SPAN&gt;
&lt;SPAN class="o"&gt;*/&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 28 Oct 2011 14:01:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaq-p/13849978</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-10-28T14:01:49Z</dc:date>
    </item>
    <item>
      <title>Re: ASA: implicit commit after each call proxy procedure</title>
      <link>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849979#M4880822</link>
      <description>&lt;P&gt;To determine if the call really is auto-committing, try creating a second Oracle procedure containing a rollback and calling that via a proxy procedure right after the call t_proxy_to_oracle( 'qwerty123' );&lt;/P&gt;
&lt;P&gt;FWIW a SQL Anywhere 12 remote database does not exhibit this behavior; i.e., the rollback is done on the remote database.&lt;/P&gt;
&lt;P&gt;AFAIK Oracle does not auto-commit itself, it's a client thing, which in this case might be the ODBC driver.&lt;/P&gt;</description>
      <pubDate>Sun, 30 Oct 2011 11:39:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849979#M4880822</guid>
      <dc:creator>Breck_Carter</dc:creator>
      <dc:date>2011-10-30T11:39:51Z</dc:date>
    </item>
    <item>
      <title>Re: ASA: implicit commit after each call proxy procedure</title>
      <link>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849980#M4880823</link>
      <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;"which in this case might be the ODBC driver."&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I agree that this would be uncomfortable here, but to auto-commit &lt;EM&gt;is&lt;/EM&gt; &lt;A href="http://dcx.sybase.com/index.html#1201/en/dbprogramming/controlling-commit-sqlapp.html"&gt;ODBC's default behaviour&lt;/A&gt;...&lt;/P&gt;</description>
      <pubDate>Sun, 30 Oct 2011 16:22:37 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849980#M4880823</guid>
      <dc:creator>VolkerBarth</dc:creator>
      <dc:date>2011-10-30T16:22:37Z</dc:date>
    </item>
    <item>
      <title>Re: ASA: implicit commit after each call proxy procedure</title>
      <link>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849981#M4880824</link>
      <description>&lt;P&gt;...but not, apparently, for CREATE SERVER ... CLASS 'SAODBC' USING 'DRIVER=SQL Anywhere 12;...&lt;/P&gt;</description>
      <pubDate>Sun, 30 Oct 2011 17:05:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849981#M4880824</guid>
      <dc:creator>Breck_Carter</dc:creator>
      <dc:date>2011-10-30T17:05:16Z</dc:date>
    </item>
    <item>
      <title>Re: ASA: implicit commit after each call proxy procedure</title>
      <link>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849982#M4880825</link>
      <description>&lt;H2&gt;With invoke ROLLBACK by calling oracle proxy procedure - same result:&lt;/H2&gt;
&lt;DIV class="codehilite"&gt;&lt;PRE&gt;&lt;SPAN class="o"&gt;--&lt;/SPAN&gt; &lt;SPAN class="n"&gt;oracle&lt;/SPAN&gt; &lt;SPAN class="n"&gt;alter&lt;/SPAN&gt; &lt;SPAN class="n"&gt;sql:&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;create&lt;/SPAN&gt; &lt;SPAN class="n"&gt;procedure&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_remote_rollback&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;is&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;begin&lt;/SPAN&gt;
    &lt;SPAN class="n"&gt;rollback&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;end&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="o"&gt;--&lt;/SPAN&gt; &lt;SPAN class="n"&gt;asa&lt;/SPAN&gt; &lt;SPAN class="n"&gt;alter&lt;/SPAN&gt; &lt;SPAN class="n"&gt;sql:&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;create&lt;/SPAN&gt; &lt;SPAN class="n"&gt;procedure&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_to_oracle_rollback&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="p"&gt;)&lt;/SPAN&gt; &lt;SPAN class="n"&gt;at&lt;/SPAN&gt; &lt;SPAN class="s"&gt;'etbos;;bos;t_remote_rollback'&lt;/SPAN&gt;

&lt;SPAN class="o"&gt;--&lt;/SPAN&gt; &lt;SPAN class="n"&gt;asa&lt;/SPAN&gt; &lt;SPAN class="n"&gt;test&lt;/SPAN&gt; &lt;SPAN class="n"&gt;sql:&lt;/SPAN&gt;
&lt;SPAN class="nb"&gt;delete&lt;/SPAN&gt; &lt;SPAN class="n"&gt;from&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_call_param&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;commit&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;begin&lt;/SPAN&gt; &lt;SPAN class="n"&gt;tran&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="n"&gt;call&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_to_oracle&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="s"&gt;'qwerty123'&lt;/SPAN&gt; &lt;SPAN class="p"&gt;);&lt;/SPAN&gt;
    &lt;SPAN class="n"&gt;call&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_to_oracle_rollback&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="p"&gt;);&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;rollback&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="nb"&gt;select&lt;/SPAN&gt; &lt;SPAN class="o"&gt;*&lt;/SPAN&gt; &lt;SPAN class="n"&gt;from&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_call_param&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt; &lt;SPAN class="sr"&gt;/* 1 row selected */&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;/DIV&gt;


&lt;H2&gt;Another test SQL:&lt;/H2&gt;
&lt;DIV class="codehilite"&gt;&lt;PRE&gt;&lt;SPAN class="n"&gt;call&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_to_oracle&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt; &lt;SPAN class="s"&gt;'qwerty123'&lt;/SPAN&gt; &lt;SPAN class="p"&gt;);&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;commit&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="nb"&gt;select&lt;/SPAN&gt; &lt;SPAN class="o"&gt;*&lt;/SPAN&gt; &lt;SPAN class="n"&gt;from&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_call_param&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt; &lt;SPAN class="sr"&gt;/* 1 row selected */&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;begin&lt;/SPAN&gt; &lt;SPAN class="n"&gt;tran&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="nb"&gt;delete&lt;/SPAN&gt; &lt;SPAN class="n"&gt;from&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_call_param&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="nb"&gt;select&lt;/SPAN&gt; &lt;SPAN class="o"&gt;*&lt;/SPAN&gt; &lt;SPAN class="n"&gt;from&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_call_param&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt; &lt;SPAN class="sr"&gt;/* 0 row selected */&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;rollback&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="nb"&gt;select&lt;/SPAN&gt; &lt;SPAN class="o"&gt;*&lt;/SPAN&gt; &lt;SPAN class="n"&gt;from&lt;/SPAN&gt; &lt;SPAN class="n"&gt;t_proxy_call_param&lt;/SPAN&gt;&lt;SPAN class="p"&gt;;&lt;/SPAN&gt; &lt;SPAN class="sr"&gt;/* &amp;gt;&amp;gt; 1 row selected &amp;lt;&amp;lt; */&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;/DIV&gt;


&lt;P&gt;Thus, delete through the same ODBC driver supports distributed transaction&lt;/P&gt;</description>
      <pubDate>Mon, 31 Oct 2011 10:53:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849982#M4880825</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-10-31T10:53:16Z</dc:date>
    </item>
    <item>
      <title>Re: ASA: implicit commit after each call proxy procedure</title>
      <link>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849983#M4880826</link>
      <description>&lt;P&gt;Because the decision and is not found, suggest that we go on the other hand: someone is opportunity to check for similar configuration?&lt;/P&gt;
&lt;P&gt;If the error only on my configuration will somehow find that leads to commiting.
And if such working with proxy tables-SQL Server established Anywhere (for example, described in the documentation), then the solution will be completely different.&lt;/P&gt;
&lt;P&gt;Sorry, my English is not very good.&lt;/P&gt;</description>
      <pubDate>Mon, 21 Nov 2011 03:31:47 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/asa-implicit-commit-after-each-call-proxy-procedure/qaa-p/13849983#M4880826</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-11-21T03:31:47Z</dc:date>
    </item>
  </channel>
</rss>

