From: joao_vieira at siaconsultoria.com.br (Joao Vieira) Date: Tue, 28 Feb 2006 08:21:50 -0300 Subject: [Pljava-dev] ERROR: java.sql.SQLException: The url cannot benull In-Reply-To: Message-ID: <000801c63c59$2d351fd0$3a0108c0@JOAOVIEIRA> Hi Guy The connection used is to the same database. We got some functions that use the already existing jdbc connection (same used by the app). This same code it's already working on oracle 10r2. The Compiere.getSQLValue function it's working as well, inside the app. Some code envolved: public class Currency { public static BigDecimal base (BigDecimal p_Amount, int p_C_CurrencyFrom_ID, Timestamp p_ConversionDate, int p_AD_Client_ID, int p_AD_Org_ID) throws SQLException { if (p_Amount == null || p_C_CurrencyFrom_ID == 0) return null; if (p_Amount.signum() == 0) return p_Amount; String sql = "SELECT ac.C_Currency_ID " + "FROM AD_ClientInfo ci" + " INNER JOIN C_AcctSchema ac ON (ci.C_AcctSchema1_ID=ac.C_AcctSchema_ID) " + "WHERE ci.AD_Client_ID=?"; int C_CurrencyTo_ID = Compiere.getSQLValue(sql, p_AD_Client_ID); if (p_C_CurrencyFrom_ID == C_CurrencyTo_ID) return p_Amount; return convert(p_Amount, p_C_CurrencyFrom_ID, C_CurrencyTo_ID, p_ConversionDate, 0, p_AD_Client_ID, p_AD_Org_ID); } // base } //////////////////////////////////////////////////////////////////////////// /////// Function declaration at postgreSQL: CREATE OR REPLACE FUNCTION compiere.currencybase(amount "numeric", c_currencyfrom_id int4, conversiondate timestamptz, ad_client_id int4, ad_org_id int4) RETURNS "numeric" AS 'org.compiere.sqlj.Currency.base(java.math.BigDecimal,int,java.sql.Timestamp ,int,int)' LANGUAGE 'java' VOLATILE; ALTER FUNCTION compiere.currencybase(amount "numeric", c_currencyfrom_id int4, conversiondate timestamptz, ad_client_id int4, ad_org_id int4) OWNER TO compiere; GRANT EXECUTE ON FUNCTION compiere.currencybase(amount "numeric", c_currencyfrom_id int4, conversiondate timestamptz, ad_client_id int4, ad_org_id int4) TO compiere; //////////////////////////////////////////////////////////////////////////// /////// SQL=SELECT COUNT(*) AS Lines,c.ISO_Code,o.TotalLines,o.GrandTotal,currencyBase(o .GrandTotal,o.C_Currency_ID,o.DateAcct, o.AD_Client_ID,o.AD_Org_ID) AS ConvAmt F ROM C_Order o INNER JOIN C_Currency c ON (o.C_Currency_ID=c.C_Currency_ID) INNER JOIN C_OrderLine l ON (o.C_Order_ID=l.C_Order_ID) WHERE o.C_Order_ID=? GROUP BY o.C_Currency_ID, c.ISO_Code, o.TotalLines, o.GrandTotal, o.DateAcct, o.AD_Clien t_ID, o.AD_Org_ID [12] org.postgresql.util.PSQLException: ERROR: java.sql.SQLException: The url cannot be null; State=08001; ErrorCode=0 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryEx ecutorImpl.java:1512) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutor Impl.java:1297) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.ja va:188) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Stat ement.java:437) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(Abstract Jdbc2Statement.java:353) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc 2Statement.java:257) at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.postgresql.ds.common.PooledConnectionImpl$StatementHandler.invoke (PooledConnectionImpl.java:467) at $Proxy1.executeQuery(Unknown Source) at org.compiere.util.CPreparedStatement.executeQuery(CPreparedStatement. java:99) at org.compiere.model.MTab.getTrxInfo(MTab.java:1422) at org.compiere.apps.APanel.dataStatusChanged(APanel.java:823) at org.compiere.model.MTab.fireDataStatusChanged(MTab.java:1790) at org.compiere.model.MTab.setCurrentRow(MTab.java:1976) at org.compiere.model.MTab.query(MTab.java:517) at org.compiere.grid.GridController.query(GridController.java:534) at org.compiere.apps.APanel.stateChanged(APanel.java:1004) at javax.swing.JTabbedPane.fireStateChanged(JTabbedPane.java:290) at javax.swing.JTabbedPane$ModelListener.stateChanged(JTabbedPane.java:2 22) There are anything you need to know? Thanks in advance Joao -----Original Message----- From: pljava-dev-bounces at gborg.postgresql.org [mailto:pljava-dev-bounces at gborg.postgresql.org] On Behalf Of Guy Rouillier Sent: ter?a-feira, 28 de fevereiro de 2006 02:51 To: pljava-dev at gborg.postgresql.org Subject: Re: [Pljava-dev] ERROR: java.sql.SQLException: The url cannot benull Joao Vieira wrote: > I've installed postgre 8.1 with pl/java (default installation), and > when i try to execute some function that call the database again, i > got the message above. PL/Java is used to write procedural code within the database, i.e., stored functions. JDBC is used by external applications to connect to the database. One is independent of the other. Are you saying that from within a Java stored function, you are trying to execute a JDBC connect to connect to a different database? Show us the code you are using to connect, and clarify where this code is running: in an external application or from within a Java stored function. -- Guy Rouillier _______________________________________________ Pljava-dev mailing list Pljava-dev at gborg.postgresql.org http://gborg.postgresql.org/mailman/listinfo/pljava-dev