when inserting to table, text type parameter become NULL (after big assignment to this parameter) - Mailing list pgsql-sql

From Sofer, Yuval
Subject when inserting to table, text type parameter become NULL (after big assignment to this parameter)
Date
Msg-id F8B9B12641FB6B4FAC761BDEF9D63B040EE5D4BD@tlv-ex-01.adprod.bmc.com
Whole thread Raw
List pgsql-sql
<div class="Section1"><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">Hi, </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">I am trying to get server parameters (pg_settings) using a cursor and insert them to one column
table.</span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt; 
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">A stored procedure parameter holds the long string.</span></font><p class="MsoNormal"><font
face="Arial"size="3"><span style="font-size:12.0pt; 
font-family:Arial">The insert of this parameter succeeds. </span></font><p class="MsoNormal"><font face="Arial"
size="3"><spanstyle="font-size:12.0pt; 
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">The problem is that the string (the parameter value) is not inserted to the table.</span></font><p
class="MsoNormal"><fontface="Arial" size="3"><span style="font-size:12.0pt; 
font-family:Arial">When selecting, this column shows NULL value. </span></font><p class="MsoNormal"><font face="Arial"
size="3"><spanstyle="font-size:12.0pt; 
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">The procedure : </span></font><p class="MsoNormal"><font face="Arial" size="3"><span
style="font-size:12.0pt;
font-family:Arial"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span style="font-size:
12.0pt;font-family:Arial;color:blue">CREATE OR REPLACE FUNCTION dbu_show_server(monitor_table_id text)</span></font><p
class="MsoNormal"><fontcolor="blue" face="Arial" size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue">RETURNS int AS</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">$BODY$</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">DECLARE</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue">cur1 cursor for</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">select name,setting,source</span></font><p class="MsoNormal"><font color="blue"
face="Arial"size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue">from pg_settings;</span></font><p class="MsoNormal"><font color="blue"
face="Arial"size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue">p_name text default '';</span></font><p class="MsoNormal"><font color="blue"
face="Arial"size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue">p_value text default '';</span></font><p class="MsoNormal"><font color="blue"
face="Arial"size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue">p_source text default '';</span></font><p class="MsoNormal"><font color="blue"
face="Arial"size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue">p_out text default '';</span></font><p class="MsoNormal"><font color="blue"
face="Arial"size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue">BEGIN       </span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue">open cur1;</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">  </span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">  loop</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">       </span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">       fetch cur1 into p_name,p_value,p_source; </span></font><p
class="MsoNormal"><fontcolor="blue" face="Arial" size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue">       exit when not found;  </span></font><p class="MsoNormal"><font color="blue"
face="Arial"size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue">       </span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">       p_out := p_out || p_name || '=' || p_value || ' source=' || p_source ||
',';</span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue">          </span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">   end loop;</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue">close cur1;</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue">raise notice 'p_out is %' ,p_out;</span></font><p class="MsoNormal"><font
color="blue"face="Arial" size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue">insert into dbu_monitor_table(id,printable_output)
values(monitor_table_id,p_out); </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue">return 0; </span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span
style="font-size:
12.0pt;font-family:Arial;color:blue">END;</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">$BODY$</span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">LANGUAGE 'plpgsql' VOLATILE;</span></font><p class="MsoNormal"><font face="Arial"
size="3"><spanstyle="font-size:12.0pt; 
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">To activate the procedure: </span></font><p class="MsoNormal"><font face="Arial" size="3"><span
style="font-size:12.0pt;
font-family:Arial"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span style="font-size:
12.0pt;font-family:Arial;color:blue">select dbu_show_server('Sunday')</span></font><p class="MsoNormal"><font
face="Arial"size="3"><span style="font-size:12.0pt; 
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">The monitor table creation: </span></font><p class="MsoNormal"><font face="Arial" size="3"><span
style="font-size:12.0pt;
font-family:Arial"> </span></font><p class="MsoNormal"><font color="blue" face="Arial" size="3"><span style="font-size:
12.0pt;font-family:Arial;color:blue">create table dbu_monitor_table(id text, printable_output text)</span></font><p
class="MsoNormal"><fontface="Arial" size="3"><span style="font-size:12.0pt; 
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">I noticed that it is a matter of the parameter length. </span></font><p class="MsoNormal"><font
face="Arial"size="3"><span style="font-size:12.0pt; 
font-family:Arial">When I defined p_out to be shorter, there was no problem.</span></font><p class="MsoNormal"><font
face="Arial"size="3"><span style="font-size:12.0pt; 
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">For example instead of: </span></font><p class="MsoNormal"><font color="blue" face="Arial"
size="3"><spanstyle="font-size: 
12.0pt;font-family:Arial;color:blue">p_out := p_out || p_name || '=' || p_value || ' source=' || p_source || ',';
</span></font><pclass="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt; 
font-family:Arial">I wrote (here it gets only p_name variable): </span></font><p class="MsoNormal"><font color="blue"
face="Arial"size="3"><span style="font-size: 
12.0pt;font-family:Arial;color:blue">p_out := p_out || p_name || '=' || p_value</span></font><font face="Arial"><span
style="font-family:Arial">;</span></font><p class="MsoNormal"><font face="Arial" size="3"><span
style="font-size:12.0pt;
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">In this case column printable_output was filled as expected…</span></font><p class="MsoNormal"><font
face="Arial"size="3"><span style="font-size:12.0pt; 
font-family:Arial">Please help. </span></font><p class="MsoNormal"><font face="Arial" size="3"><span
style="font-size:12.0pt;
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="3"><span style="font-size:12.0pt;
font-family:Arial">Thanks </span></font><p class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10.0pt;
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10.0pt;
font-family:Arial"> </span></font><p class="MsoNormal"><font face="Arial" size="2"><span style="font-size:10.0pt;
font-family:Arial">Yuval Sofer<br /> BMC Software<br /> CTM&D Business Unit</span></font><p class="MsoNormal"><font
face="Arial"size="2"><span style="font-size:10.0pt; 
font-family:Arial">DBA Team<br /> 972-52-4286-282<br /><a
href="mailto:yuval_sofer@bmc.com">yuval_sofer@bmc.com</a></span></font><fontface="Arial" size="2"><span
style="font-size:10.0pt;font-family:Arial"></span></font><pclass="MsoNormal"><font face="Times New Roman"
size="3"><spanstyle="font-size: 
12.0pt"> </span></font></div>

pgsql-sql by date:

Previous
From: Tom Lane
Date:
Subject: Re: what's wrong with my date comparison?
Next
From: Harald Fuchs
Date:
Subject: Re: Having difficulty writing a "best-fit" query..