pl/sql procedure error
Hello
I'm trying to insert the results of a query in a table. When I run it as a sql it works perfectly fine. I am writing this in a procedure that I need to run this often, but I get an error indicating that the table was not found. any suggestions on this.
SQL query
insert into db_usage
SELECT hg. Nom_tablespace 'space ',.
TOTALUSEDSPACE "use."
(hg. TOTALSPACE - FG TOTALUSEDSPACE) "MB free.
Hg.TotalSpace "Total."
round (100 * ((hg.totalspace-fg.totalusedspace) / hg.totalspace))
"using."
SYSDATE
Of
(select nom_tablespace,
Round (Sum (bytes) / 1048576) TotalSpace
from dba_data_files
Group by tablespace_name) hg.
(select round (sum (bytes) /(1024*1024)) totalusedspace, nom_tablespace)
from dba_segments
GROUP BY nom_tablespace) fg
where hg. Nom_tablespace = FG TABLESPACE_NAME
ORDER BY hg. NOM_TABLESPACE;
END;
***************
PL/SQL
CREATE OR REPLACE PROCEDURE TEST AS
Begin
DBMS_OUTPUT. ENABLE;
insert into db_usage
SELECT hg. Nom_tablespace 'space ',.
TOTALUSEDSPACE "use."
(hg. TOTALSPACE - FG TOTALUSEDSPACE) "MB free.
Hg.TotalSpace "Total."
round (100 * ((hg.totalspace-fg.totalusedspace) / hg.totalspace))
"using."
SYSDATE,
TO_CHAR (sysdate, 'HH24')
Of
(select nom_tablespace,
Round (Sum (bytes) / 1048576) TotalSpace
from dba_data_files
Group by tablespace_name) hg.
(select round (sum (bytes) /(1024*1024)) totalusedspace, nom_tablespace)
from dba_segments
GROUP BY nom_tablespace) fg
where hg. Nom_tablespace = FG TABLESPACE_NAME
ORDER BY hg. NOM_TABLESPACE;
END;
Thank you
balls
Most likely, you must do the following:
Connect / as sysdba
Grant select on sys.dba_data_files to proc_owner;
Grant select on sys.dba_segments to proc_owner;
A few other comments...
> DBMS_OUTPUT. ENABLE;
It is not necessary in a stored procedure. This process has even not any DBMS_OUTPUT. PUT (_LINE) call so the above is unnecessary.
> ORDER BY hg. NOM_TABLESPACE;
Consider dropping it. Are you concerned that the data are inserted into the table in the order? What concerns you is that data comes from the table in the order sorted which cases you'd ORDER BY queries using this table.
See you soon,.
Brian
Tags: Database
Similar Questions
-
Creating a PL/SQL procedure to run the following code but the landing upwards errors!
Hey all!
This is my first time with PL/SQL. I created the following procedure to load a major part of the update instructions at the same time to read the DB performance. I need to print a sysdate timestamp before and after the load so that I can know how long it takes for the DB update prescribed lines. I gave 100 lines initially and will keep changing. When I run this code, I came across some errors. Could you please help me with it.
CODE:
PROCEDURE FACT_UPDATE
IS
DECLARE
CNT NUMBER: = 0;UPD CURSOR is
SELECT
'UPDATE XXAFL_MON_FACTS_F SET TASK_WID =' | NVL (TO_CHAR (TASK_WID), 'NULL') |', EXECUTION_PLAN_WID =' | NVL (TO_CHAR (EXECUTION_PLAN_WID), 'NULL').
', DETAILS_WID =' | NVL (TO_CHAR (DETAILS_WID), 'NULL') |', SOURCE_WID =' | NVL (TO_CHAR (SOURCE_WID), 'NULL') |', TARGET_WID = ' | NVL (TO_CHAR (TARGET_WID), 'NULL').
', RUN_STATUS_WID =' | NVL (TO_CHAR (RUN_STATUS_WID), 'NULL') |', SEQ_NUM =' | NVL (TO_CHAR (SEQ_NUM), 'NULL') |', NAME = "' | NVL (TO_CHAR (NAME), 'NULL').
"', NO_POSITION =" ' | NVL (TO_CHAR (INSTANCE_NUM), e ') | " ', INSTANCE_NAME = "' | NVL (TO_CHAR (INSTANCE_NAME), 'NULL').
"', TYPE_CD =" ' | NVL (TO_CHAR (TYPE_CD), e ') | " ', STATUS_CD = "' | NVL (TO_CHAR (STATUS_CD), e ') | " ', START_TS =' | Decode (START_TS, null, "to_date('''|| to_char (START_TS,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")').
', END_TS =' | Decode (END_TS, null, "to_date('''|| to_char (END_TS,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")') |', DURATION = ' | NVL (TO_CHAR (DURATION), 'NULL') |', STATUS_DESC = "' | NVL (TO_CHAR (STATUS_DESC), 'NULL').
"', DBCONN_NAME =" ' | NVL (TO_CHAR (DBCONN_NAME), e ') | " ', SUCESS_ROWS =' | NVL (TO_CHAR (SUCESS_ROWS), 'NULL').
', FAILED_ROWS =' | NVL (TO_CHAR (FAILED_ROWS), 'NULL') |', ERROR_CODE = ' | NVL (TO_CHAR (ERROR_CODE), 'NULL') |', NUM_RETRIES =' | NVL (TO_CHAR (NUM_RETRIES), 'NULL').
', READ_THRUPUT =' | NVL (TO_CHAR (READ_THRUPUT), 'NULL') |', LAST_UPD = ' | Decode (LAST_UPD, null, "to_date('''|| to_char (LAST_UPD,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")') |', RUN_STEP_WID = "' | NVL (TO_CHAR (RUN_STEP_WID), 'NULL').
"', W_INSERT_DT = ' | Decode (W_INSERT_DT, null, "to_date('''|| to_char (W_INSERT_DT,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")') |', W_UPDATE_DT = ' | Decode (W_UPDATE_DT, null, "to_date('''|| to_char (W_UPDATE_DT,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")').
', START_DATE_WID =' | NVL (TO_CHAR (START_DATE_WID), 'NULL') |', END_DATE_WID = ' | NVL (TO_CHAR (END_DATE_WID), 'NULL') |', START_TIME =' |
NVL (TO_CHAR (START_TIME), 'NULL') |', END_TIME =' | NVL (TO_CHAR (END_TIME), 'NULL'). "WHERE INTEGRATION_ID ="' | INTEGRATION_ID | " « ; » AS a Column OF XXAFL_MON_FACTS_F;BEGIN
dbms_output.put_line (sysdate);
to record in a loop of the UPDdbms_output.put_line (record.col_name);
immediately run record.col_name;CNT: = cnt + 1;
If cnt > 1000
and then commit;
CNT: = 0;
dbms_output.put_line (sysdate);
end if;
end loop;
dbms_output.put_line (sysdate);
END; -ProcedureERRORS:
Error starting line: 1 at the controls.
PROCEDURE FACT_UPDATE
Error report-
Unknown commandError from line: 2 in command.
IS
Error report-
Unknown command
Error from line: 3 in command.
DECLARE
CNT: = 0;UPD CURSOR is
SELECT
'UPDATE XXAFL_MON_FACTS_F SET TASK_WID =' | NVL (TO_CHAR (TASK_WID), 'NULL') |', EXECUTION_PLAN_WID =' | NVL (TO_CHAR (EXECUTION_PLAN_WID), 'NULL').
', DETAILS_WID =' | NVL (TO_CHAR (DETAILS_WID), 'NULL') |', SOURCE_WID =' | NVL (TO_CHAR (SOURCE_WID), 'NULL') |', TARGET_WID = ' | NVL (TO_CHAR (TARGET_WID), 'NULL').
', RUN_STATUS_WID =' | NVL (TO_CHAR (RUN_STATUS_WID), 'NULL') |', SEQ_NUM =' | NVL (TO_CHAR (SEQ_NUM), 'NULL') |', NAME = "' | NVL (TO_CHAR (NAME), 'NULL').
"', NO_POSITION =" ' | NVL (TO_CHAR (INSTANCE_NUM), e ') | " ', INSTANCE_NAME = "' | NVL (TO_CHAR (INSTANCE_NAME), 'NULL').
"', TYPE_CD =" ' | NVL (TO_CHAR (TYPE_CD), e ') | " ', STATUS_CD = "' | NVL (TO_CHAR (STATUS_CD), e ') | " ', START_TS =' | Decode (START_TS, null, "to_date('''|| to_char (START_TS,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")').
', END_TS =' | Decode (END_TS, null, "to_date('''|| to_char (END_TS,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")') |', DURATION = ' | NVL (TO_CHAR (DURATION), 'NULL') |', STATUS_DESC = "' | NVL (TO_CHAR (STATUS_DESC), 'NULL').
"', DBCONN_NAME =" ' | NVL (TO_CHAR (DBCONN_NAME), e ') | " ', SUCESS_ROWS =' | NVL (TO_CHAR (SUCESS_ROWS), 'NULL').
', FAILED_ROWS =' | NVL (TO_CHAR (FAILED_ROWS), 'NULL') |', ERROR_CODE = ' | NVL (TO_CHAR (ERROR_CODE), 'NULL') |', NUM_RETRIES =' | NVL (TO_CHAR (NUM_RETRIES), 'NULL').
', READ_THRUPUT =' | NVL (TO_CHAR (READ_THRUPUT), 'NULL') |', LAST_UPD = ' | Decode (LAST_UPD, null, "to_date('''|| to_char (LAST_UPD,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")') |', RUN_STEP_WID = "' | NVL (TO_CHAR (RUN_STEP_WID), 'NULL').
"', W_INSERT_DT = ' | Decode (W_INSERT_DT, null, "to_date('''|| to_char (W_INSERT_DT,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")') |', W_UPDATE_DT = ' | Decode (W_UPDATE_DT, null, "to_date('''|| to_char (W_UPDATE_DT,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")').
', START_DATE_WID =' | NVL (TO_CHAR (START_DATE_WID), 'NULL') |', END_DATE_WID = ' | NVL (TO_CHAR (END_DATE_WID), 'NULL') |', START_TIME =' |
NVL (TO_CHAR (START_TIME), 'NULL') |', END_TIME =' | NVL (TO_CHAR (END_TIME), 'NULL'). "WHERE INTEGRATION_ID ="' | INTEGRATION_ID | " « ; » AS a Column OF XXAFL_MON_FACTS_F;BEGIN
dbms_output.put_line (sysdate);
to record in a loop of the UPDdbms_output.put_line (record.col_name);
immediately run record.col_name;CNT: = cnt + 1;
If cnt > 1000
and then commit;
CNT: = 0;
dbms_output.put_line (sysdate);
end if;
end loop;
dbms_output.put_line (sysdate);
END; -Procedure
Error report-
ORA-06550: line 2, column 6:
PLS-00103: encountered the symbol "=" when expecting one of the following conditions:constant exception < an ID >
< a between double quote delimited identifiers > double long Ref table
char time timestamp interval date binary national character
NCHAR
The symbol '< identifier >' has been substituted for "=" continue.
06550 00000 - "line %s, column % s:\n%s".
* Cause: Usually a PL/SQL compilation error.
* Action:
Error starting line: 1 at the controls.
PROCEDURE FACT_UPDATE
Error report-
Unknown commandError from line: 2 in command.
IS
Error report-
Unknown command
Error from line: 3 in command.
DECLARE
CNT NUMBER: = 0;UPD CURSOR is
SELECT
'UPDATE XXAFL_MON_FACTS_F SET TASK_WID =' | NVL (TO_CHAR (TASK_WID), 'NULL') |', EXECUTION_PLAN_WID =' | NVL (TO_CHAR (EXECUTION_PLAN_WID), 'NULL').
', DETAILS_WID =' | NVL (TO_CHAR (DETAILS_WID), 'NULL') |', SOURCE_WID =' | NVL (TO_CHAR (SOURCE_WID), 'NULL') |', TARGET_WID = ' | NVL (TO_CHAR (TARGET_WID), 'NULL').
', RUN_STATUS_WID =' | NVL (TO_CHAR (RUN_STATUS_WID), 'NULL') |', SEQ_NUM =' | NVL (TO_CHAR (SEQ_NUM), 'NULL') |', NAME = "' | NVL (TO_CHAR (NAME), 'NULL').
"', NO_POSITION =" ' | NVL (TO_CHAR (INSTANCE_NUM), e ') | " ', INSTANCE_NAME = "' | NVL (TO_CHAR (INSTANCE_NAME), 'NULL').
"', TYPE_CD =" ' | NVL (TO_CHAR (TYPE_CD), e ') | " ', STATUS_CD = "' | NVL (TO_CHAR (STATUS_CD), e ') | " ', START_TS =' | Decode (START_TS, null, "to_date('''|| to_char (START_TS,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")').
', END_TS =' | Decode (END_TS, null, "to_date('''|| to_char (END_TS,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")') |', DURATION = ' | NVL (TO_CHAR (DURATION), 'NULL') |', STATUS_DESC = "' | NVL (TO_CHAR (STATUS_DESC), 'NULL').
"', DBCONN_NAME =" ' | NVL (TO_CHAR (DBCONN_NAME), e ') | " ', SUCESS_ROWS =' | NVL (TO_CHAR (SUCESS_ROWS), 'NULL').
', FAILED_ROWS =' | NVL (TO_CHAR (FAILED_ROWS), 'NULL') |', ERROR_CODE = ' | NVL (TO_CHAR (ERROR_CODE), 'NULL') |', NUM_RETRIES =' | NVL (TO_CHAR (NUM_RETRIES), 'NULL').
', READ_THRUPUT =' | NVL (TO_CHAR (READ_THRUPUT), 'NULL') |', LAST_UPD = ' | Decode (LAST_UPD, null, "to_date('''|| to_char (LAST_UPD,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")') |', RUN_STEP_WID = "' | NVL (TO_CHAR (RUN_STEP_WID), 'NULL').
"', W_INSERT_DT = ' | Decode (W_INSERT_DT, null, "to_date('''|| to_char (W_INSERT_DT,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")') |', W_UPDATE_DT = ' | Decode (W_UPDATE_DT, null, "to_date('''|| to_char (W_UPDATE_DT,' jj/mm/aaaa hh) |")) ((', "dd/mm/yyyy hh")').
', START_DATE_WID =' | NVL (TO_CHAR (START_DATE_WID), 'NULL') |', END_DATE_WID = ' | NVL (TO_CHAR (END_DATE_WID), 'NULL') |', START_TIME =' |
NVL (TO_CHAR (START_TIME), 'NULL') |', END_TIME =' | NVL (TO_CHAR (END_TIME), 'NULL'). "WHERE INTEGRATION_ID ="' | INTEGRATION_ID | " « ; » AS a Column OF XXAFL_MON_FACTS_F;BEGIN
dbms_output.put_line (sysdate);
to record in a loop of the UPDdbms_output.put_line (record.col_name);
immediately run record.col_name;CNT: = cnt + 1;
If cnt > 1000
and then commit;
CNT: = 0;
dbms_output.put_line (sysdate);
end if;
end loop;
dbms_output.put_line (sysdate);
END; -Procedure
Error report-
ORA-00911: invalid character
ORA-06512: at line 24
00911 00000 - "invalid character".
* Cause: identifiers may not start with any character other than ASCII
letters and numbers. $# _ are allowed after the first
character. May contain identifiers surrounded by doublequotes
any character other than a quotation mark. Other quotes
(q' #... #') cannot use spaces, tabs or as carriage returns
delimiters. For all other settings, consult the SQL language
Reference manual.
* Action:In addition to the other reviews, and apart from the quality of the code, you should really (really!) learn how to format your code for better "read-ability. This will also contribute to a better quality. If you are unsure how to format, then use a development as a SQL developer tool. It will not format "as you type", but a frequent use of the shortened format keyboard (Ctrl + F7 in SQL Dev) will keep your code readable and coherent.
And then you learn to keep this format when you post on the forum.
Like this:
PROCEDURE FACT_UPDATE
IS
DECLARE
CNT NUMBER: = 0;
CURSOR UPD
IS
SELECT "UPDATE XXAFL_MON_FACTS_F SET TASK_WID ='"
|| NVL (TO_CHAR (TASK_WID), 'NULL')
|', EXECUTION_PLAN_WID ='
|| NVL (TO_CHAR (EXECUTION_PLAN_WID), 'NULL')
|| ', DETAILS_WID ='
|| NVL (TO_CHAR (DETAILS_WID), 'NULL')
|', SOURCE_WID ='
|| NVL (TO_CHAR (SOURCE_WID), 'NULL')
|', TARGET_WID = '
|| NVL (TO_CHAR (TARGET_WID), 'NULL')
|| ', RUN_STATUS_WID ='
|| NVL (TO_CHAR (RUN_STATUS_WID), 'NULL')
|', SEQ_NUM ='
|| NVL (TO_CHAR (SEQ_NUM), 'NULL')
|', NAME = "'
|| NVL (TO_CHAR (NAME), 'NULL')
|| ' ', NO_POSITION = "'
|| NVL (TO_CHAR (INSTANCE_NUM), 'NULL')
||'' ', INSTANCE_NAME = "'
|| NVL (TO_CHAR (INSTANCE_NAME), 'NULL')
|| ' ', TYPE_CD = "'
|| NVL (TO_CHAR (TYPE_CD), 'NULL')
||'' ', STATUS_CD = "'
|| NVL (TO_CHAR (STATUS_CD), 'NULL')
||'' ', START_TS ='
|| DECODE (START_TS, ",' to_date(''e))
|| To_char (START_TS, "mm/dd/yyyy hh)
||'' ((', "dd/mm/yyyy hh")')
|| ', END_TS ='
|| DECODE (END_TS, ",' to_date(''e))
|| To_char (END_TS, "mm/dd/yyyy hh)
||'' ((', "dd/mm/yyyy hh")')
|', DURATION = '
|| NVL (TO_CHAR (DURATION), 'NULL')
|', STATUS_DESC = "'
|| NVL (TO_CHAR (STATUS_DESC), 'NULL')
|| ' ', DBCONN_NAME = "'
|| NVL (TO_CHAR (DBCONN_NAME), 'NULL')
||'' ', SUCESS_ROWS ='
|| NVL (TO_CHAR (SUCESS_ROWS), 'NULL')
|| ', FAILED_ROWS ='
|| NVL (TO_CHAR (FAILED_ROWS), 'NULL')
|', ERROR_CODE = '
|| NVL (TO_CHAR (ERROR_CODE), 'NULL')
|', NUM_RETRIES ='
|| NVL (TO_CHAR (NUM_RETRIES), 'NULL')
|| ', READ_THRUPUT ='
|| NVL (TO_CHAR (READ_THRUPUT), 'NULL')
|', LAST_UPD = '
|| DECODE (LAST_UPD, ",' to_date(''e))
|| To_char (LAST_UPD, "mm/dd/yyyy hh)
||'' ((', "dd/mm/yyyy hh")')
|', RUN_STEP_WID = "'
|| NVL (TO_CHAR (RUN_STEP_WID), 'NULL')
|| ' ', W_INSERT_DT = '
|| DECODE (W_INSERT_DT, ",' to_date(''e))
|| To_char (W_INSERT_DT, "mm/dd/yyyy hh)
||'' ((', "dd/mm/yyyy hh")')
|', W_UPDATE_DT = '
|| DECODE (W_UPDATE_DT, ",' to_date(''e))
|| To_char (W_UPDATE_DT, "mm/dd/yyyy hh)
||'' ((', "dd/mm/yyyy hh")')
|| ', START_DATE_WID ='
|| NVL (TO_CHAR (START_DATE_WID), 'NULL')
|', END_DATE_WID = '
|| NVL (TO_CHAR (END_DATE_WID), 'NULL')
|', START_TIME ='
|| NVL (TO_CHAR (START_TIME), 'NULL')
|', END_TIME ='
|| NVL (TO_CHAR (END_TIME), 'NULL')
||' WHERE INTEGRATION_ID = "'
|| INTEGRATION_ID
||''';' AS Column
OF XXAFL_MON_FACTS_F;
BEGIN
dbms_output.put_line (sysdate);
FOR registration in UPD
LOOP
dbms_output.put_line (record.col_name);
EXECUTE immediate record.col_name;
CNT: = cnt + 1;
IF cnt > 1000 THEN
COMMIT;
CNT: = 0;
dbms_output.put_line (sysdate);
END IF;
END LOOP;
dbms_output.put_line (sysdate);
END; -Procedure
-
ORA-900 sql not valid reporting error while calling the optimize_index pl/sql procedure
Hi Experts,I'm on Oracle 11.2.0.3 on Linux and I have installed in my database Oracle text. I want to configure annex dbms_job to optimize my oracle text index. So first, I created a pl/sql procedure to optimize indexes. It gives me error ORA-900, but the sql even if I run in sqlplus works very well! Can you please help me the question is to find:
Here is the procedure:
(Either incidentally CTXAPP role has been granted in the schema where these Oracle text indexes are created and where the below procedure to optimize the index is running.)
CREATE OR REPLACE PROCEDURE optimize_ora_txt_indexes_debug IS CURSOR cur_context_indexes IS SELECT index_name FROM user_indexes WHERE index_type = 'DOMAIN' AND ROWNUM<2 ORDER BY INDEX_NAME; v_user VARCHAR2 (30); v_pod VARCHAR2 (30); v_start_time TIMESTAMP; v_end_time TIMESTAMP; v_elapsed VARCHAR2 (40); v_msg VARCHAR2 (1000); v_error_code NUMBER; v_error_msg VARCHAR2 (1000); v_sql VARCHAR2 (1000); BEGIN FOR c IN cur_context_indexes LOOP BEGIN v_sql:= 'ctx_ddl.optimize_index (idx_name =>'||chr(39)|| c.index_name||chr(39)||', optlevel => '||chr(39)||'FULL'||chr(39)||')'; dbms_output.put_line(v_sql); execute immediate v_sql; EXCEPTION WHEN OTHERS THEN v_error_code := SQLCODE; v_error_msg := SQLERRM; v_msg := 'Error while optimizing the index ' || c.index_name || ' ' || TO_CHAR (v_error_code) || ' ' || v_error_msg; DBMS_OUTPUT.put_line (v_msg); END; END LOOP; EXCEPTION WHEN OTHERS THEN v_error_code := SQLCODE; v_error_msg := SQLERRM; v_msg := 'Error while in the optimize index procedure' || ' ' || TO_CHAR (v_error_code) || ' ' || v_error_msg; DBMS_OUTPUT.put_line (v_msg); END optimize_ora_txt_indexes_debug; / --the procedure compiles successfully. Now when I run it , I get the error: SQL>exec optimize_ora_txt_indexes_debug; ctx_ddl.optimize_index (idx_name =>'ACCESS_CLNT_IDX04', optlevel => 'FULL') Error while optimizing the index ACCESS_CLNT_IDX04 -900 ORA-00900: invalid SQL statement --When I run the same command from sqlplus as execute statement , it works fine: SQL>exec ctx_ddl.optimize_index (idx_name =>'ACCESS_CLNT_IDX04', optlevel => 'FULL'); PL/SQL procedure successfully completed.
If everything runs from sqlplus, but fails in plsql... I'll be very grateful for pointers solve the problem.
Thanks,
OrauserN
Hello
It is a problem of pl/sql syntax. A call with EXEC is the same using BEGIN... Code of... END of block;
SO, you need to include a beginning and an end to your call:
v_sql:= 'BEGIN ctx_ddl.optimize_index (idx_name =>'||chr(39)|| c.index_name||chr(39)||', optlevel => '||chr(39)||'FULL'||chr(39)||'); END;';
That's all.
Herald tiomela
-
Passing data from attachment of DB (Blob data Type) after the CLOB data type conversion, giving the error "ORA-06502: PL/SQL: digital error or value" in the PL/SQL package. If the BLOB size 32K > it will give another error works great my procedure.
For example, I enclose my code here.
function get_base64 (p_blob_in in blob) return clob is
CLOB v_clob;
CLOB v_result;
whole v_offset;
v_chunk_size PLS_INTEGER: = 12288;
v_buffer_varchar varchar2 (32767).
v_buffer_raw raw (32767).
Start
fnd_file.put_line (fnd_file.log, 'here');
If p_blob_in is null then
Returns a null value.
end if;
DBMS_LOB.CREATETEMPORARY (v_clob, true);
fnd_file.put_line (fnd_file.log, 'here1');
v_offset: = 1;
fnd_file.put_line (fnd_file.log, 'Loop value'-| ceil (DBMS_LOB.) GetLength (p_blob_in) / v_chunk_size));
because me in 1... ceil (DBMS_LOB. GetLength (p_blob_in) / v_chunk_size) loop
DBMS_LOB. Read (p_blob_in, v_chunk_size, v_offset, v_buffer_raw);
v_buffer_raw: = utl_encode.base64_encode (v_buffer_raw);
v_buffer_varchar: = utl_raw.cast_to_varchar2 (v_buffer_raw);
DBMS_LOB. WriteAppend (v_clob, length (v_buffer_varchar), v_buffer_varchar);
v_offset: = v_offset + v_chunk_size;
end loop;
fnd_file.put_line (fnd_file.log, 'Out of the loop');
v_result: = v_clob;
fnd_file.put_line (fnd_file.log, 'V_result length' - |) DBMS_LOB. GetLength (v_result));
fnd_file.put_line (fnd_file.log, 'V_result' - | v_result);
DBMS_LOB.freeTemporary (v_clob);
Return v_result;
exception
while others then
fnd_file.put_line (fnd_file.log, 'Error based on the encode_base64' - |) SQLERRM);
Returns a null value.
end;
In my main program I call this function as below:
Main proceedings...
l_return_clob CLOB.
Begin
....
l_return_clob: = get_base64 (p_blob_in);
-In returning it gives error - ORA-06502: PL/SQL: digital error or value
end;
Then, please mark the thread ANSWERED.
-
Hello
I have an EA of RDBMS Oracle 11.2.0.4.
I ger the following error when I try to convert a data type LONG to type CLOB data thanks to a PL/SQL procedure:
declare
v_prefix varchar2 (20): = null;
v_text_view_clob clob: = null;
long v_text_view_long: = null;cursor c_v
is
Select
a.view_name as view_name
Of
USER_VIEWS one;
Start
for r_v in c_v
loop
Start
v_text_view_clob: = null;
v_text_view_long: = null;-Do the SQL code of the view
Select
a.Text text
in
v_text_view_long
Of
USER_VIEWS one
where
a.view_name = r_v.view_name;v_text_view_clob: = v_text_view_long;
update of ohibo_views one
set
a.view_text = v_text_view_clob
where
a.view_name = r_v.view_name;
exception
while others then
dbms_output.put_line ('View =' | r_v.view_name |) "kan niet worden geconverteerd!");
dbms_output.put_line (substr (sqlerrm, 1, 60));
end;
end loop;
-commit;
exception
while others then
lift;
end;
/I get the error a specific record:
View = VER_POLISMUTATIES_VW kan niet worden geconverteerd!
ORA-06502: PL/SQL: digital error or value
At looked the origina; Value of type LONG and it is indeed a "long" piece of text.
However, CLOB has a restriction about 4G * db_block_size and LONG 2 G - 1 according to the documentation.
I should be able with the method above to convert a LONG in CLOB.
Anyone had a similar situation?
Thanks in advance for advice how to solve.
Kind regards
PS: my apologies, I didn't know which group to post this discussion: database or PL/SQL.
Good indeed, a link with the right explanation.
I didn't know that there was such a function.
Thank you!
Kind regards
-
How to expose a pl/sql procedure via slot shape of apex
Hi gurus
I have a form that is create from a procedure.
I put the auth to pubic_user if it is available to the public.
So now I need is to know how to find a way to imitate the button submit and draw the corresponding URL
while I can expose my PL/SQL via a URL through apex procedure.
I have attached a screenshot of my form
Thx for all the help.
Here's the URL of my pl/sql
https://Apex.Oracle.com/pls/Apex/f?p=30141:1:5404118417577:
and I look at the code with tool from dev on chrome for the Send button
If only show.
< a href = "javascript:apex.submit ('SUBMIT'); "class ="uButton"id ="B67074418713946955629"role ="button"> < span > Submit </span > < /a >
So how do I know what return? Thx for all the help
Hi Kazuneric,
kazuneric wrote:
I intend to pass the parameter in the URL for a user to click through
You will find the following useful threads:
Call a rendering of APEX (EPG) form of procedure within the error
403 Forbidden error URL the PL/SQL procedure call
I hope this helps!
Kind regards
Kiran
-
Apex 4.2
I searched through the forums of the research about this error, but I do not understand what to do from here. I am writing a process that sends an e-mail when a value of the claim is made (or on a button click). Procedure is as follows:
DECLARE l_body clob; l_body_html clob; l_subject varchar2(100); BEGIN l_body := empty_clob(); l_body_html := empty_clob(); IF V('REQUEST') in ('SAVE_ME') AND :P32_PARENT_UPDATED_FL IS NOT NULL THEN l_subject := 'Survey Job Request Updated'||utl_tcp.crlf||utl_tcp.crlf; l_body := 'Update'||utl_tcp.crlf; l_body_html := '<html> <head> <style type = "text/css"> /* Can add style attributes later */ </style> </head> <body>'||utl_tcp.crlf; l_body_html := l_body_html ||'Survey Job Request has been updated.<br /><br />'||utl_tcp.crlf; l_body_html := l_body_html ||'Title: '||utl_tcp.crlf; l_body_html := l_body_html ||:P32_TITLE||utl_tcp.crlf; l_body_html := l_body_html ||'<br />Request Category : '||utl_tcp.crlf; l_body_html := l_body_html ||:P32_REQUEST_CATEGORY||utl_tcp.crlf; l_body_html := l_body_html ||'<br />Update Date: '||utl_tcp.crlf; l_body_html := l_body_html ||:P32_UPDATE_DATE||utl_tcp.crlf; l_body_html := l_body_html ||'<br />Updated By: '||utl_tcp.crlf; l_body_html := l_body_html ||:P32_LAST_EDITED_BY_USERID||utl_tcp.crlf; l_body_html := l_body_html ||'</body></html>'; END IF; :P32_CANCELLATION_REASON := l_body_html; apex_mail.send( p_to => '[email protected]', p_from => '[email protected]', p_body => l_body_html, p_body_html => l_body_html, p_subj => l_subject); END;
I added two lines to the code (lines 08 and 09) and when I run my program, I now get the error:
- ORA-21560: 3 argument is null, invalid or out of range
Without these two lines, I received the error:
ORA-06502: PL/SQL: digital error or value: specified incorrect LOB Locator
I'm not quite sure what is wrong or what I can change. There seems to be right, and in fact, it worked before. I have no idea why this error keeps popping up. Any help on that would be great. Thanks in advance.
Hello
NewApexCoder wrote:
Hmmm... good point. I think that apex_mail.send must be called inside the IF block. But in the future, I added several conditional statements, won't I need to include the apex_mail.send function in each IF block? But at the same time, there is the case that if no conditional instructions are met? Tests, when none of the conditions are true (when I had a second IF block in the code), an email would not be defined, which is correct. Could that be causing a problem however. If the IF block is not filled could he always try to send an email about anything or the l_body_html and l_subject fields have in them the garbage that causing ORA error?
If the call to the procedure of sending (it is a procedure, and not a function) many times is necessary or useful depends on exactly what you're trying to do.
For example, you can write to Santa for
- Submit a wish list
- Change of address
- Contradiction with your boss, who can you tell Santa you were mean
or any combination of these grounds. If you want to send a simple email whenever any of the conditions are met (and not send a when none are met), then you could do something like this:
DECLARE
need_to_send BOOLEAN: = FALSE;
...
BEGIN
...
IF wish_list IS NOT NULL
THEN
l_body: = l_body | ...
need_to_send: = TRUE;
END IF;
IF old_addresss <> new_address
THEN
l_body: = l_body | ...
need_to_send: = TRUE;
END IF;
IF boss_is_a_big_fat_liar
THEN
l_body: = l_body | ...
need_to_send: = TRUE;
END IF;
IF need_to_send
SO - It's the only call to send
apex_mail. Send...
In any case, the error message ' ORA-21560: argument 3 sucks...» "is pretty clear: If you have not given a value to everything you're passing as p_body, then you'd better call the procedure.
-
Problem with pl/sql procedure, trying to get the value of the user during execution
Hello
Using oracle 11.2.0.3
Can run sql that gets the value of the user during the fine workmanship and also via an anonymous block.
uses of SQL & Enter_Product_Number
anonymous block using: Enter_Product_number.
However, get problems when trying to create a pl/sql procedure, use one of the above
relevant below tried code part & and: buit works do not error, try bad bind variable if used: and ora-600 if try use &.
How can we have a procedure from pl/sql that can call and receives a value of user during execution?
Only way around what I can think of is to pass parameters to the procedure
Thank you
create or replace procedure ins_into_issues is
v_nd_rec_cnt number (10);
v_normal_rec_cnt number (10);
Start
Select count (*)
in v_nd_rec_cnt
refmast.issues I have
where i.iss_product_num = & old_nd_product_number;
Select count (*)
in v_normal_rec_cnt
refmast.issues I have
where i.iss_product_num = & normal_product_number;
-code below commented above works.
end;
Hello
what something like this:
create or replace procedure INS_INTO_ISSUES ( in_normal number, in_old number ) is v_nd_rec_cnt number(10); v_normal_rec_cnt number(10); begin select count(*) into v_nd_rec_cnt from refmast.issues i where i.iss_product_num = in_old; -- select count(*) into v_normal_rec_cnt from refmast.issues i where i.iss_product_num = in_normal; end;
concerning
Kay
-
ORA-06502: PL/SQL: digital error: error in the conversion of char to number
Hello world.
I have a strange problem here. I'll try to explain better. I work with APEX 4.2 and of Oracle Database 11 g Enterprise Edition Release 11.2.0.3.0 - 64 bit Production.
Here are my parameters NLS_SESSION_PARAMETER and NLS_DATABASE_PARAMETER: NLS_NUMERIC_CHARACTERS,.
I have a table with a lot of body numbers, and when I imported a MS Access application data, all fields were imported with the comma as decimal separator.
Now, I have a form with several fields of number and when I leave a numeric field, a body of numbers of amount total is calculated and automatically filled with a bit of javascript.
Now the problem: calculating fields (sum) succeeds only when I use the decimal as the delimiter. If I use the comma, I get a NaN value in the total amount field. I managed to convert all commas in points with javascript, so the total amount is calculated.
When I try to save the record, I get the error: ORA-06502: PL/SQL: digital error: error in the conversion of char to number because I'm trying to save the separator point in my number fields.
I tried to use REPLACE function to replace the. by one, before winning but does not solve the problem.
This sounds familiar to anyone?
Thanks in advance.
OK, the problem is solved people.
Somehow, the registration procedure had an influence on another calculation of my form and the error came from this process. So I put a to_number and replace stated in the calculation and all records very well and it shows my total.
-
FND_REQUEST PL/SQL procedure with parameters
Hi guys
I created a concurrent program, using the PL/SQL procedure that has 2 parameters. I try to call the concurrent program to help
v_req_id: = FND_REQUEST. SUBMIT_REQUEST ('INV', 'OMS_POP_INVVALUES_P',
NULL, SYSDATE, FALSE, l_on_date, l_org_id,.
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
);
COMMIT;
However, the competitor programming always fail with
* Starts * August 26, 2013 14:02:31 error ORACLE 6550 for Cause of FDPSTP: FDPSTP failed due to the ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in the call to 'OMS_POP_INVVALUES_P' ORA-06550: line 1, column 7: PL/SQL: statement ignored
and I doubt that it is because the database procedure call is not correct.
I put four parameters with the simultaneous program, as they were with the procedure itself, which are
p_on_date BY DATE, NUMBER, errbuff OUT VARCHAR2, OUT VARCHAR2 retcode p_org_id
Help, please
Kind regards
REDA
Okay I solved the problem of
1. change the order of the parameters in the procedure
CREATE OR REPLACE PROCEDURE OMS_POP_INVVALUES_P)
errbuff OUT VARCHAR2, retcode ON NUMBER, p_on_date AS, p_org_id in NUMBER)
IS
and by changing the call of simultaneous program as follows
l_req_id: =.
fnd_request.submit_request ('INV', 'OMS_POP_INVVALUES_P',
NULL, SYSDATE, FALSE, l_in_date, l_org_id, CHR (0));
: SYSTEM. Message_Level: = '25';
COMMIT;
After removing all the parameters of the list of program parameters. No need to pass a value for errbuff and retcode, just pass other parameters and put an end to the list of parameters with CHR (0). Hope it's useful for someone else there.
Kind regards
REDA
-
How to use the record type as a parameter IN PL/SQL procedure or package
Hi people,
I need help on the record as the OUT parameter type. I am able to get out a single line as a parameter, but not getting do not idea how to get a multi ranks as output parameter.
I have the code that works very well for a single line. Please see CODE1.
But when I try to get several lines, I'm failing to do. Please see the CODE2. I get the error of compilation as
Error report:
ORA-06550: line 11, column 35:
PLS-00487: Invalid reference to the variable "P_NAME.
ORA-06550: line 11, column 1:
PL/SQL: Statement ignored
06550 00000 - "line %s, column % s:\n%s".
* Cause: Usually a PL/SQL compilation error.
Any help or a sample execution of script would be really useful.
Thanks in advance.
YZ
--------------------------CODE1------------------------------------------
-------------------------Package Spec-------------------------------
CREATE OR REPLACE
PACKAGE xx_sample_pkg as
--
Xx_sample_table_rectype RECORD TYPE IS
(p_name varchar2 (40))
number of p_emp_id
);
PROCEDURE xx_sample_prc (xx_sample_rec1, OUT xx_sample_table_rectype);
END xx_sample_pkg;
------------------------------Package Body------------------------
create or replace
PACKAGE xx_sample_pkg AS BODY
--
PROCEDURE xx_sample_prc (xx_sample_rec1 OUT xx_sample_table_rectype) IS
BEGIN
SELECT ename, empno
IN xx_sample_rec1
FROM scott.emp
WHERE ename = 'SMITH ';.
END xx_sample_prc;
END xx_sample_pkg;
-------------------------------------------Execute----------------------
DECLARE
l_rec_type xx_sample_pkg.xx_sample_table_rectype;
BEGIN
dbms_output.put_line ('xx_sample_prc appeal');
xx_sample_pkg.xx_sample_prc (l_rec_type);
dbms_output.put_line ('YZ' | l_rec_type.p_name |') '|| l_rec_type.p_emp_id);
END;
---------------------------------------------------------------
-------------------------CODE2-------------------------------------------
-------------------------Package Spec-------------------------------
CREATE OR REPLACE
PACKAGE xx_sample_pkg as
--
Xx_sample_table_rectype RECORD TYPE IS
(p_name varchar2 (40))
number of p_emp_id
);
PROCEDURE xx_sample_prc (xx_sample_rec1, OUT xx_sample_table_rectype);
END xx_sample_pkg;
------------------------------Package Body------------------------
create or replace
PACKAGE xx_sample_pkg AS BODY
--
PROCEDURE xx_sample_prc (xx_sample_rec1 OUT xx_sample_table_rectype) IS
BEGIN
SELECT ename, empno
IN xx_sample_rec1
FROM scott.emp;
END xx_sample_prc;
END xx_sample_pkg;
-------------------------------------------Execute----------------------
DECLARE
l_rec_type xx_sample_pkg.xx_sample_table_rectype;
BEGIN
dbms_output.put_line ('xx_sample_prc appeal');
xx_sample_pkg.xx_sample_prc (l_rec_type);
for l_rec in 1.l_rec_type.p_name.count
loop
dbms_output.put_line ('YZ' | l_rec_type.p_name (l_rec) |) » '|| l_rec_type.p_emp_id (l_rec));
end loop;
end;
---------------------------------------------------------------
bb8c573a-6ca3-4d7c-90ed-e55c2df67201 wrote:
But now, my question would be why the record type could not be used? My understanding is missing some concept between use of type type array collection record vs. Please specify.
Do not confuse the folder with the collection.
SY.
-
Nested reading XML using XQUERY in the PL/SQL procedure
I'm using Oracle 11 G.
I have a PL/SQL procedure, which is reading XML using xquery XMLTYPE column in a table. The XML contains data of the DEPARTMENT and its SECTIONS. DEPARTMENT has a to-many with SECTIONS or a DEPARTMENT can have one or more SECTIONS, and there may be cases where the DEPARTMENT will have all SECTIONS.
The XML structure is such that
label to identify a DEPARTMENT and all its corresponding SECTIONS.<DATA>
XML
XQUERY<ROWSET> <DATA> <DEPARTMENT> <DEPARTMENT_ID>DEP1</DEPARTMENT_ID> <DEPARTMENT_NAME>myDEPARTMENT1</DEPARTMENT_NAME> </DEPARTMENT> <SECTIONS> <SECTIONS_ID>6390135666643567</SECTIONS_ID> <SECTIONS_NAME>mySection1</SECTIONS_NAME> </SECTIONS> <SECTIONS> <SECTIONS_ID>6390135666643567</SECTIONS_ID> <SECTIONS_NAME>mySection2</SECTIONS_NAME> </SECTIONS> </DATA> <DATA> <DEPARTMENT> <DEPARTMENT_ID>DEP2</DEPARTMENT_ID> <DEPARTMENT_NAME>myDEPARTMENT2</DEPARTMENT_NAME> </DEPARTMENT> <SECTIONS> <SECTIONS_ID>63902</SECTIONS_ID> <SECTIONS_NAME>mySection1</SECTIONS_NAME> </SECTIONS> </DATA> </ROWSET>
The performance of the query, you receive an errorselect department_id, department_name, sections_id, sections_name from OFFLINE_XML xml_list, xmltable( ' for $department in $param/ROWSET/DATA return $department ' passing xml_list.xml_file as "param" columns "DEPARTMENT_ID" varchar2(100) path '//DEPARTMENT/DEPARTMENT_ID', "DEPARTMENT_NAME" varchar2(4000) path '//DEPARTMENT/DEPARTMENT_NAME', "SECTIONS_ID" varchar2(100) path '//SECTIONS/SECTIONS_ID', "SECTIONS_NAME" varchar2(4000) path '//SECTIONS/SECTIONS_NAME' ) section_list where xml_list.Status = 5
It is natural because I have several sections, now how I'll handle this situation.ORA-19279: XPTY0004 - XQuery dynamic type mismatch: expected singleton sequence - got multi-item sequence
It's the usual approach to manage several nested collections:
SQL> select d.department_id 2 , d.department_name 3 , s.sections_id 4 , s.sections_name 5 from offline_xml t 6 , xmltable( 7 '/ROWSET/DATA' 8 passing t.xml_file 9 columns 10 DEPARTMENT_ID varchar2(20) path 'DEPARTMENT/DEPARTMENT_ID' 11 , DEPARTMENT_NAME varchar2(30) path 'DEPARTMENT/DEPARTMENT_NAME' 12 , SECTIONS xmltype path 'SECTIONS' 13 ) d 14 , xmltable( 15 '/SECTIONS' 16 passing d.sections 17 columns 18 SECTIONS_ID varchar2(20) path 'SECTIONS_ID' 19 , SECTIONS_NAME varchar2(30) path 'SECTIONS_NAME' 20 ) s 21 ; DEPARTMENT_ID DEPARTMENT_NAME SECTIONS_ID SECTIONS_NAME -------------------- ------------------------------ -------------------- ------------------------------ DEP1 myDEPARTMENT1 6390135666643567 mySection1 DEP1 myDEPARTMENT1 6390135666643567 mySection2 DEP2 myDEPARTMENT2 63902 mySection1
-
I create the tables and the following types...
CREATE TYPE ACTOR_QUOTE_TYPE AS OBJECT)
Movie_Title CHAR (36),
NUMBER of the year
Role CHAR (36),
City CHAR (255)
)
/
CREATE TABLE AS AQ_NT TYPE OF ACTOR_QUOTE_TYPE
/
CREATE TABLE ACTOR_QUOTES)
ACTORID CHAR (5),
CITY AQ_NT
) NESTED TABLE QUOTE STORE AS ACTOR_QUOTES_NT
/
I need to create a...
A PL/SQL procedure called INIT_ACTOR_QUOTES without parameter which:
Reads ALL the ACTORIDs the ACTOR table and inserts in the ACTORID attribute for each row in the ACTOR_QUOTES table (tables have the same cardinality) and at the same time inserts the following initial values in the first row of the nested quotes in each row of the table table ACTOR_QUOTES;
(Movie_Title, year, role, quote) are fixed respectively at (' ', NULL, '',' ')
Also and at the same time immediately after each use of the INSERT DELETE to delete ALL the lines of the nested table in each line from each ACTORID in ACTOR_QUOTES table.
I get an error of compilation with the code...
CREATE OR REPLACE PROCEDURE INIT_ACTOR_QUOTES
AS
CURSOR actorID_cursor IS
SELECT actorID actor;
BEGIN
FOR line IN actorID_cursor LOOP
INSERT INTO ACTOR_QUOTES (ACTORID) VALUES (actorID);
INSERT INTO actor_Quotes_NT VALUES (", NULL,",");
DELETE FROM actor_Quotes_NT WHERE ACTORID = actorID;
END LOOP;
END INIT_ACTOR_QUOTES;
/
CAUTION: Procedure created with compilation errors.
SQL > show errors;
Errors in PROCEDURE INIT_ACTOR_QUOTES:
LINE/COL ERROR
-------- -----------------------------------------------------------------
7/1 PL/SQL: statement ignored
7/44 PL/SQL: ORA-00984: column not allowed here
8/1 PL/SQL: statement ignored
8/13 PL/SQL: ORA-22812: cannot refer to the column in the nested table storage table
9/1 PL/SQL: PL/SQL: statement ignored
7/9 PL/SQL: ORA-00925: missing IN the key
9/13 PL/SQL: ORA-22812: cannot refer to the column in the nested table storage table
SQL >
Any help would be appreciated>
not my choice just the requirements I have received so much need help if possible
>
See Table Collections: examples in the doc of the SQL language reference
http://docs.Oracle.com/CD/B28359_01/server.111/b28286/statements_10002.htm#i2071643It works for me
CREATE TABLE ACTOR (ACTORID CHAR(5)) CREATE TYPE ACTOR_QUOTE_TYPE AS OBJECT ( Movie_Title CHAR(36), Year NUMBER, Role CHAR(36), Quote CHAR(255) ) / CREATE TYPE AQ_NT AS TABLE OF ACTOR_QUOTE_TYPE / CREATE TABLE ACTOR_QUOTES ( ACTORID CHAR(5), QUOTES AQ_NT ) NESTED TABLE QUOTES STORE AS ACTOR_QUOTES_NT / CREATE OR REPLACE PROCEDURE INIT_ACTOR_QUOTES AS v_actorID actor.actorID%TYPE; CURSOR actorID_cursor IS SELECT actorID FROM Actor; BEGIN OPEN actorID_cursor; LOOP FETCH actorID_cursor INTO v_actorID; EXIT WHEN actorID_cursor%NOTFOUND; INSERT INTO ACTOR_QUOTES (ACTORID, QUOTES) VALUES (v_actorID, AQ_NT(ACTOR_QUOTE_TYPE('', NULL, '', ''))); --INSERT INTO ACTOR_QUOTES (QUOTES) VALUES (ACTOR_QUOTE_TYPE('', NULL, '', '')); DELETE FROM actor_Quotes WHERE ACTORID=v_actorID; END LOOP; CLOSE actorID_cursor; END INIT_ACTOR_QUOTES ;
-
PL/SQL execution error Question
Hi Experts,
It's the SQL procedure I remove a set number of order that are closed
CREATE OR REPLACE PROCEDURE closed_test1 (varchar tabname, v_rowcount_int certain NUMBER)
is
v_sql varchar2 (4000);
Start
v_sql: =' delete ' | tabname |' College where exists (select order_nbr from the cl closed_order where fac.internal_order_id = cl.order_nbr)';
immediately run v_sql;
v_rowcount_int: = number of lines sql %;
dbms_output.put_line (v_rowcount_int |) ("' deleted rows");
commit;
end;
/
I use an ETL tool to display the number of deleted rows, so I had to create an output parameter and awarded for the number of rows sql %
When I run
Declare
number of v_rowndel;
exec closed_test1 ('COST_TRANS_TABLE', v_rowndel);
I get this error message
ERROR at line 3:
ORA-06550: line 3, column 57:
PLS-00103: encountered the symbol "end-of-file" when awaits an of the
Next:
:= ; not null default characters
I don't understand what the problem is! Is it because I don't have an exit statement, but the sql statement is interlooped
Any help is apprct in advance
Thank you
AJIt's the way you need to call the procedure.
DECLARE v_rowndel NUMBER; BEGIN closed_test1 ( 'COST_TRANS_TABLE', v_rowndel); DBMS_OUTPUT.PUT_LINE ('v_rowndel = ' || v_rowndel); END;
If you use a tool, then turn on dbms_output.
If execution of sqlplus and then SET SERVEROUPUT on.G.
-
Call the PL/SQL procedure with different parameters?
I use PL/SQL for web development. I have a page of PL/SQL which collects information and returns the user off site with one return url (another PL/SQL procedure).
I have the return procedure with every documented return variable (default null) in order to always take the return. However, there are (reported... cannot reproduce because of the nature of the business) cases where a 404 error is returned because of the incompatibility of parameter.
Is it possible to proceed regardless of the parameters? Someone at - it suggestions?
Thank you!user2960509 wrote:
My problem is that they sometimes send back of settings that do not match what I expect.
Use the interface "+ flexible +" mod_plsql - see the Oracle® HTTP Server mod_plsql user's Guide for the documented details.
The signature of the procedure parameter is as follows (it is called by mod_plsql using tables of name value pairs):
create or replace procedure Scott.MyWebProc( name_array owa.vc_arr, value_array owa.vc_arr) is ...
In your code, you just browse the berries to get the name values passed query string. You can even filled an associative array in your code (a table indexed by string and no number, where the index string represents the name of param)-this approach can make it pretty easy for the code make reference to a parameter, with little effort on your part to provide an interface to query by name for code to get the value of a parameter name.
To enable the flexible (aka parameter 2) call interface, precede the call to web with an exclamation character. For example
http://my-webserbver.my-domain.com/pls/dad/!scott.mywebproc?name-1=val-1&name-2=val-2..,name-n=val=n
Maybe you are looking for
-
I have a job to Bootcamp Windows partition on my Macbook Pro I could regularly access the menu of boot disk (Startup Option). The other day I went to remove my OsX space in disk partition utility so that I could go on my windows partition and fill th
-
How can I remove a control created with NewCtrl?
I create controls dynamically with NewCtrl(). Now, I need to remove them and create different controls. How delete/delete one control that I created with NewCtrl?
-
When I'll be able to navigate the bb10 apps?
When I'll be able to navigate the bb10 through my devAlpha apps?
-
Hello, actually I need to protect and keep my number of bbm for me, even if I change my mobile iphone, how can I do this? Is it possible? cause once I cange my iphone and the app bbm download with the help of my e-mail address + password, the bbm num
-
How to create screencasts of Excel using Surface RT
Firstly I would like to say that I like and if not love my Surface RT. It's the best product quality/price/service currently available in the Tablet market. Lecturer at the University of applied sciences, Amsterdam, I would like to do a screencast /