how to assign variable to stored procedure in PostgreSQL - postgresql

Can we assign variable to stored procedure in PostgreSQL?
I have tried like this but getting error:
ERROR: syntax error at or near "("
LINE 57: W_SPLIT_MSG:= call splitstringcheck (P_MAIL_ID, ';');*
My code:
W_SPLIT_MSG:= call splitstringcheck (P_MAIL_ID, ';');
Please help me solve this error

Related

How to determine PostgreSQL Error Codes from error message

In a PL/pgSQL function, I want to trap an error. For example, when I convert text to a number, I get an error (I run it in psql, but get the same error in the Postico GUI client):
select 'a'::numeric;
ERROR: invalid input syntax for type numeric: "a"
LINE 1: select 'a'::numeric;
^
To trap this error, I made an EXCEPTION-clause like this:
CREATE OR REPLACE FUNCTION public.to_number(input text) RETURNS numeric
AS $$
BEGIN
RETURN input::numeric;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END
$$
LANGUAGE plpgsql
IMMUTABLE
RETURNS NULL ON NULL INPUT
;
However, I don't like the condition WHEN OTHERS.
How do I map the error message ERROR: invalid input syntax for type numeric: "a" to one mentioned in the Appendix A. PostgreSQL Error Codes?
I want to catch the conversion error when converting to numeric and no other conditions (as the above function is a simplified one).
I have the feeling I'm missing something, but what?
When you get the error in psql, run
\errverbose
and you'll get information like
ERROR: 22P02: invalid input syntax for type numeric: "a"
LINE 1: select 'a'::numeric;
^
LOCATION: set_var_from_str, numeric.c:6856
22P02 is the SQLSTATE, and Appendix A of the documentation will tell you that that is invalid_text_representation.

PostgreSQL invalid input syntax for type bigint

I'm going through Anthony DeBarros's Practical SQL and am trying to import data using COPY but am getting the following error message:
ERROR: invalid input syntax for type bigint: "1.05076E+11"
CONTEXT: COPY us_counties_2010, line 72, column area_land: "1.05076E+11".
Thanks

ERROR: invalid input syntax for type numeric: "N/A" ... nice but which column?

I am running a function in PostgreSQL which contains several functions which purpose is to load data from foreign tables into mine. While running I get this error:
[SELECT - 0 row(s), 762.353 secs] [Error Code: 0, SQL State: 22P02] ERROR: invalid input syntax for type numeric: "N/A"
Where: PL/pgSQL function import_data_3(integer,timestamp with time zone,timestamp with time zone,integer) line 16 at SQL statement
SQL statement "SELECT import_data_3(import, beg, end_t, is_l)"
PL/pgSQL function data_import_all(timestamp with time zone,timestamp with time zone,integer,integer) line 31 at PERFORM
I know what that means and also its reason I am trying to convert 'N/A' string to number and there for this error, problem is this lousy error does not specify the column where the error occurred.
Is there a way to get more precise error message which would tell me the exact column where the error happened?
It's not in the column but in one of the parameters that are passed to import_data_3.
You called the query SELECT import_data_3(import, beg, end_t, is_l).
The specification of this function is import_data_3(integer,timestamp with time zone,timestamp with time zone,integer)
Since you got the error
invalid input syntax for type numeric: "N/A"
this most likely means that either first parameter "import" or the last one "is_l" contain the value "N/A". Try to debug the calling code of the function data_import_all and see how those two parameter values are generated.

Getting an error when using a date parameter

I am using iReport 5.0.1. I created a date parameter and am using it in my query:
When I preview the report, I enter my date parameter:
After I enter all the parameters and run the report, I get this error:
Error filling print... Error executing SQL statement for : Sample
net.sf.jasperreports.engine.JRException: Error executing SQL statement for : Sample
at com.jaspersoft.jrx.query.PlSqlQueryExecuter.createDatasource(PlSqlQueryExecuter.java:143)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1086)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:667)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1258)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:276)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745)
at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:891)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "Feb"
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
at com.jaspersoft.jrx.query.PlSqlQueryExecuter.createDatasource(PlSqlQueryExecuter.java:136)
... 12 more
Print not filled. Try to use an EmptyDataSource...
What is going on here, and how do I fix this? Thanks!
I think the ! in $P!{...} means to include the parameter's literal value in the report.
Try using $P{start_date} and $P{end_date}, both without the !.
Effectively, your SQL statement is using:
and finalinsdate >= Feb/18/2013
That is not a valid SQL statement, which means PostgreSQL will complain with:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "Feb"
For next time, copy and paste the source code, instead of taking a screen capture.

What is wrong with this PostgreSQL statement?

I have the following statement that I need to run on a table which has a geometry column. I am getting a WKT from Oracle using my C# program and then attempting to insert it into PostgreSQL using an npgsql connection.
highways=# INSERT INTO cluster_125m (CELL_GEOM)
VALUES(ST_GeomFromWKT('POLYGON ((80000.0 17280.0, 80125.0 17280.0, 80125.0 17405.0, 80000.0 17405.0, 80000.0 17280.0))'));
I get the following error:
ERROR: function st_geomfromwkt(unknown) does not exist
LINE 1: INSERT INTO cluster_125m (CELL_GEOM) VALUES(ST_GeomFromWKT('...
^
HINT: No function matches the given name and argument types. You might need to
add explicit type casts.
What is the issue here and what can be done about it?
Use function ST_GeomFromText instead of ST_GeomFromWKT.