Score() operator fails in dynamic SQL
When I try to use the score() operater in dynamic SQL statement, I get "ORA-01858: a
non-numeric character was found where a numeric was expected". When the same statement is executed directly (in a cursor or from SQLPlus) it works fine.
I suspect this problem may be related to BUG1343045. This bug describes errors occuring using the score() operator when CURSOR_SHARING=FORCE is set. Perhaps CURSOR_SHARING=FORCE is set automatically when a dynamic SQL statement is issued?
I'd like to get some comments on the problem from an Oracle engineer & work-around possibilities. I would like to use score to order my search results by relevance, and without dynamic SQL, I would have to code 9 or more separate searcg cursors to account for all the possible combinations of search terms in the query!
Thanks,
Kevin Rubesh
Sajjad2 wrote:
explicit grant to the objectsKarthick's idea about roles was my first thought too. since you have explict grants we will have to look elsewhere.
Do you need synonyms to reference objects in another schema? What happens if you prefix the table names with the schema owner?
Similar Messages
-
Item Values Not Set - Dynamic SQL Fails to Parse.
** Think I've fixed this **
(By simply defining some page computations I was able to set the item values to some default. Please don't feel the need to reply :-))
I have a page consisting of 5 report parameters and a report, all in one region, 4 parameters are LOVs and one is a text field which in the query are all compared to table column values. The report region type is SQL Query(PL/SQL function body returning SQL Query).
If I load the page in a new session with default values for the LOVs as '%' and a null text field, I get the following error message:-
failed to parse SQL query:
ORA-00936: missing expression
If I examine the session state, I see that none of the parameter values are set, which is probably why the dynamic sql is failing.
If I set one of the parameters to something, eg. choose another value in an LOV or type some text in the text field, and re-run the report, it executes without error.
What's the easiest way to fix this, is it to set the page items to some specific values when the page is first loaded? If so how do I do that? I'm not having much luck creating some process to do it.
All help appreciated.
Ian
Message was edited by:
Ian_FHi Ian,
Did you already try to put a default value for that lov?
Or try to do a computation before header?
Thanks,
Dimitri
-- http://dgielis.blogspot.com
-- http://apex-evangelists.com -
"SQL Operation failed" When deleting forms EPMA
V11.1.2.1 - Planning through EPMA.
I have a form which I made to test something that I cant get rid of. I can edit it, I can hide it and I can change any normal setting you would expect on it. When I open it, everything appears as expected. This is happening for just one form, I can create and delete others in the same folder. I've tried renaming it and deleting and that still doesn't work.
I just cant select it and click "Delete": I get an error message saying "The SQL Operation failed. Check logs for details.
Does anyone know which logs in particular might point me to the cause of the problem?
Has anyone had and resolved this before?
Regards
EdCheck the user_projects/<instancename>/diagnostics/logs/starter or services depending on linx/windows. Check the Hyperion Planning log to see what errors are generated in the log when you attempt the delete. You should see an sql error message.
If you don't see any messages you want to set planning property debug_enabled TRUE (the instructions for this are in the troubleshooting documentation for EPM) and restart the server.
Retry and reexamine the logs. -
Hi,<BR>While adding/Changing member in planning it gives the error "The SQL operation failed with an error code: 0" and not allowing any of the changes. I am not able to open the forms giving the error as "Fiscal Days Input - is invalid". Interestingly one form was opening, when the Page selection is changed it also started giving error as like "Fisacal Days Input(form name) - is invalid check log for details". <BR>Pls advice us that what is this error and how to resolve this.<BR><BR>And Which log is to be referred for the details.<BR><BR>Thanks<BR>Ravi
If a form is invalid it generally means that one of the dimension references is missing.<BR><BR>Can you get in to edit the form?<BR>If you can, see if you can preview it. I suspect you will not be able to.<BR><BR>If not, check all dimension boxes have at least one member against them.<BR>If you have multiple rows and/or columns check all of them too.<BR><BR>I've had a couple of forms in dev "drop" a dimension reference but only once or twice so not enough to reproduce or find out what is causing it. Each time I got the "form invalid" error message and managed to fix it.<BR><BR>Hope this helps.<BR>
-
SQL operation failed when new creating form ?
Dear All,
When I create a new form in workspace 11.1.2.1 , it occur an error and returns "SQL operation failed". So, how to solve it ?
Thank you all.
EvaTry to restart planning. Have you used admin account to create form?
Look at the logs <MIDDLEWARE_HOME>\user_projects\epmsystem1\diagnostics\logs\services\HyS9Planning-sysout.log and HyS9Planning-syserr.log -
How to control the maximum time that a dynamic sql can execute
Hi,
I want to restrict the maximum time that a dynamic sql can execute in a plsql block.
If the execution is not completed, the execution should be terminated and a exception should be raised.
Please let me know, if there is any provision for the same in Oracle 10g.
I was reading about Oracle Resource Database Resource Manager, which talks about restricting the maximum time of execution for Oracle session for a user.
However I am not sure, if this can be used to control the execution of dynamic sql in a plsql block.
Please provide some pointers.
Thank you,
Warm Regards,
Navin Srivastavanavsriva wrote:
We are building a messaging framework, which is used to send time sensitive messages to boundary system.I assume this means across application/database/server boundaries? Or is the message processing fully localised in the Oracle database instance?
Every message has a time to live. if the processing of message does not occurs within the specified time, we have to rollback this processing and mark the message in error state.This is a problematic requirement.. Time is not consistent ito data processing on any platform (except real-time ones). For example, messageFoo1 has a TTL (time to live) of 1 sec. It needs to read a number of rows from a table. The mere factor of whether those rows are cached in the database buffer cache, or still residing on disk, will play a major role in execution time. Physical I/O is significantly slower that logical I/O.
As a result, with the rows on disk, messageFoo1 exceeds the 1s TTL and fails. messageFoo2 is an identical message. It now finds most of the rows that were read by messageFoo1 in the buffer cache, enabling it to complete its processing under 1s.
What is the business logic behind the fact that given this approach, messageFoo1 failed, and the identical messageFoo2 succeeded? The only difference was physical versus logical I/O. How can that influence the business validation/requirement model?
If it does, then you need to look instead at a real-time operating system and server platform. Not Windows/Linux/Unix/etc. Not Oracle/SQL-Server/DB2/etc.
TTL is also not time based in other s/w layers and processing. Take for example the traceroute and ping commands for the Internet Protocol (IP) stack. These commands send an ICMP (Internet Control Message Protocol) packet.
This packet is constructed with a TTL value too. When TTL is exceeded, the packet expires and the sender receives a notification packet to that regard.
However, this TTL is not time based, but "+hop+" based. Each server's IP stack that receives an ICMP packet as it is routed through the network, subtracts 1 from the TTL and the forwards the packet (with the new TTL value). When a server's IP stack sees that TTL is zero, it does not forward the packet (with a -1 TTL), but instead responds back to the sender with an ICMP packet informing the sender that the packet's TTL has expired.
As you can see, this is a very sensible and practical implementation of TTL. Imagine now that this is time based.. and the complexities that will be involved for the IP stack s/w to deal with it in that format.
Making exact response/execution times part of the actual functional business requirements need to be carefully considered.. as this is very unusual and typically only found in solutions implemented in real-time systems. -
Chart Query and Failed to parse SQL query
Hi,
first of all, this is not a question. It is a reminder for me and maybe for someone with the same problem.
I just fell over this for the 123124 time.
I have a 3D Chart Query
select sum(order_ok) value,
count(*) maximum_value
from v_dialer_campaign
where campaign_uuid = :P300_CAMPAIGN_IDSaving fails with
"1 error has occurred Failed to parse SQL query!" ...
Saving the query without validation works, but does not show any result in the chart.
v_dialer_campaign is a view selecting from a view in a mssql db over database link and HS.
running the select in sqlplus or toad works.
Without any trace on freetds/unixodb/hs side, i would have not found the following line:
[FreeTDS][SQL Server]The data types nvarchar and text are incompatible in the equal to operator.[FreeTDS][SQL Server]Statement(s) could not be prepared.
Solution:
with q as (select :P300_CAMPAIGN_ID val from dual)
select sum(order_ok) value,
count(*) maximum_value
from v_dialer_campaign
where campaign_uuid in ( select val from q)Maybe the error output when validating the query should be included in the APEX error message.
Same solution applies for dynamic LOV's reading from HS using a where clause.I tried your first query on Apex 3.2 and it created a nice dial chart.
Is there any ORA-xxxxx error along with the "failed to parse SQL query" message? Did you double check column & table name spelling?
P.S. The second query is invalid (a superfluous comma after the second column). -
Can we use Dynamic SQL in Oracle Reports ?
Hi ,
Can we use Dynamic SQL in Oracle Reports ?
If yes please give some examples .
Thanx
sriniI believe the built-in package SRW.Do_Sql is what you are looking for
Example from the document:
/* Suppose you want to create a "table of contents" by getting the
** first character of a columns value, and page number on which its
** field fires to print. Assume that you want to put the "table of
contents"
** into a table named SHIP. You could write the following construct:
DECLARE
PAGE_NO NUMBER;
PAGE_FOR INDEX NUMBER;
SORT_CHAR CHAR(1);
CMD_LINE CHAR(200);
BEGIN
SORT_CHAR := :SORT_NAME ;
IF :CALLED = Y THEN
SRW.GET_PAGE_NUM(PAGE_FOR_INDEX);
SRW.USER_EXIT(RWECOP PAGE_FOR_INDEX
P_START_PAGENO);
SRW.MESSAGE(2,TO_CHAR(:P_START_PAGENO));
END IF;
SRW.GET_PAGE_NUM(PAGE_NO);
CMD_LINE := INSERT INTO SHIP VALUES
(||SORT_CHAR||,||TO_CHAR(PAGE_NO)||);
SRW.MESSAGE(2,CMD_LINE);
SRW.DO_SQL(CMD_LINE);
COMMIT;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
NULL;
WHEN SRW.DO_SQL_FAILURE THEN
SRW.MESSAGE(1,FAILED TO INSERT ROW INTO SHIP TABLE);
WHEN OTHERS THEN
COMMIT;
END; -
Dynamic SQL and use of aggregate functions
Hello Forum members,
I'm trying to create dynamic SQL in a function module and return the MAX value of a field.
I am passing in a parameter called CREATE_FIELD_NAME, and my SQL is
SELECT MAX(CREATE_FIELD_NAME) INTO (CREATE_DATE) FROM (TABLE_NAME).
I also tried:
SELECT MAX((CREATE_FIELD_NAME)) INTO (CREATE_DATE) FROM (TABLE_NAME).
But abap is not recognizing my variable as a variable in either case, but rather, as a field name.
Anyone know a way around this?
Thanks in advance,
Jeff
Here is my program:
FUNCTION ZJLSTEST4.
""Local Interface:
*" IMPORTING
*" VALUE(TABLE_NAME) LIKE MAKT-MAKTX
*" VALUE(CREATE_FIELD_NAME) LIKE MAKT-MAKTX
*" VALUE(UPDATE_FIELD_NAME) LIKE MAKT-MAKTX
*" EXPORTING
*" VALUE(MAX_DATE) LIKE SY-DATUM
DATA: CREATE_DATE LIKE MCHA-ERSDA VALUE '19000101',
UPDATE_DATE LIKE MCHA-LAEDA VALUE '19000101'.
SELECT MAX(CREATE_FIELD_NAME) INTO (CREATE_DATE) FROM (TABLE_NAME).
ENDSELECT.
*SELECT MAX((UPDATE_FIELD_NAME)) INTO (UPDATE_DATE) FROM (TABLE_NAME).
*ENDSELECT.
IF CREATE_DATE > UPDATE_DATE.
MAX_DATE = CREATE_DATE.
ELSE.
MAX_DATE = UPDATE_DATE.
ENDIF.
IF MAX_DATE = '19000101'.
MAX_DATE = SY-DATUM.
ENDIF.
ENDFUNCTION.Max is right, you need the spaces, as in my example.
You might like to try this:
data: l_CREATE_FIELD_NAME) LIKE MAKT-MAKTX,
l_UPDATE_FIELD_NAME) LIKE MAKT-MAKTX.
DATA: CREATE_DATE LIKE MCHA-ERSDA VALUE '19000101',
UPDATE_DATE LIKE MCHA-LAEDA VALUE '19000101'.
concatenate 'MAX(' create_name ')' into l_create_name separated by space.
concatenate 'MAX(' update_name ')' into l_update_name separated by space.
SELECT SINGLE (l_CREATE_FIELD_NAME)
INTO CREATE_DATE FROM (table_name).
SELECT SINGLE (l_updATE_FIELD_NAME)
INTO updATE_DATE FROM (table_name).
IF CREATE_DATE > UPDATE_DATE.
MAX_DATE = CREATE_DATE.
ELSE.
MAX_DATE = UPDATE_DATE.
ENDIF.
IF MAX_DATE = '19000101'.
MAX_DATE = SY-DATUM.
ENDIF.
If it still fails please post the latest abap code for us to check. -
Dynamic SQL and PL/SQL Gateway
This question is kind of out of curiosity...I had created a procedure that used some dynamic sql (execute immediate), and was trying to use it on pl/sql gateway. I kept getting page not found errors until I removed the execute immediate statement, and reverted to using static sql statements.
I am just curious, is dynamic sql not supported at all with pl/sql gateway?
Thanks
Kevin> Relax damorgan, no need to be condescending. Of course I read the docs ..
Well, you're one of the few that actually read the docs.. And one of many that lacked to state any real technical details for forum members to understand the actual problem, the actual error, and what the environment is that this is happening in.
Remember that you came to this forum for forum members to help you. In order for us to do that, you need to help us understand
- your problem
- your environment
- what you have tried
What PL/SQL Gateway do you refer to? Thus is an old term for an old product - today in Oracle there are two "gateways" into the PL/SQL engine via HTTP. Via Apache/mod_plsql and via the internal Java servlet web engine called EPG inside Oracle.
As for what the "Gateway" access to the PL/SQL engine via HTTP.. whether it supports EXECUTE IMMEDIATE or not is like asking if a car "supports" soft drinks or not (just because a human that may consume soft drinks acts as the driver of the car). Not sensible or relevant at all.
mod_plsql creates an Oracle session to the database instance, and executes a PL/SQL procedure in the database. This is no different from any other client connection to Oracle. Oracle has no clue that the client is mod_plsql and not TOAD or Java or VB or PHP or Perl or whatever else.
So how can this support or not support the EXECUTE IMMEDIATE command? Does PL/SQL support EXECUTE IMMEDIATE? Well duh...
Why do you get a generic 404? Because the PL/SQL call made by mod_plsql failed with an unhandled exception. mod_plsql gets that exception and now what? Was a valid HTP buffer created for it to stream to the web browser? If the buffer perhaps partially completed? All that mod_plsql knows is that it asked for a HTP buffer via that PL/SQL call and it got an exception in return.
A 404 HTTP error is the only reasonable and logical response for it to pass to the web browser in this case.
PS. to see why mod_plsql fail, refer to the access_log and error_log of that Apache httpd server -
For loops and dynamic sql string syntax
Hi
is there a why to loop through a dynamic sql string
normally you would have
FOR cur IN (select * from emp) LOOP
but I have a dynamic sql string called l_sql
I have tried the following
FOR cur IN l_sql LOOP
but I get
PLS-00456: item 'L_SQL' is not a cursorCompilation failed
Any ideas?You will need to use ref cursors and the OPEN v_rc FOR '<your sql string'> and then loop through it as you would with any other OPEN, LOOP, EXIT WHEN, END LOOP syntax
-
Hello All,
Been looking into this for a couple of days, and I keep hitting brick walls, so I'm hoping someone can offer me a bit of inspiration. What I'm trying to do is write a stored procedure that lets the user specify a list of tables, and an output directory, and the SP creates a series of BCP statements that export these tables to comma delimited files.
This wouldn't be too hard, but I need to output the field headings in the first row of the table (and use quotes as text qualifiers). I'm doing this by looping round sys.columns, pulling out all the fieldnames, creating two select statements, and UNION ALL-ing them together. e.g.......
select 'FIELD1','FIELD2','FIELD3','FIELD4'
union all
select field1,field2,field3,field4 from tablename
It all works fine until you try it on a table with a lot of columns. Although you can build a big SQL statement in an NVARCHAR(MAX), BCP only appears to read the first 4000 characters of it, so it fails.
To get round this, I've moved all of the code that builds the big SQL statement to its own stored procedure (i.e. you pass the tablename, and it returns the table with the field names in the first row). Then, I can just call this new SP in my BCP statement, with a couple of parameters.
The problem I'm getting is BCP is complaining saying '[Microsoft][SQL Native Client]BCP host-files must contain at least one column'. I'm setting no count off, and there are no print statements, so I'm assuming this is because the data is getting returned via an exec sp_executesq (although this is a guess). I can't think of a way round this though, as the SQL need to be dynamic.
alter PROCEDURE [dbo].[sp_QBMultiFileExportGetData]
@tablename varchar(100),
@dbname varchar(100)
AS
BEGIN
declare @Execstring as nvarchar(MAX)
declare @currentfieldname as varchar(100)
declare @selectlist as varchar(8000)
declare @fieldnamelist as varchar(8000)
declare @colnames table
columnname varchar(100)
begin
set nocount on
set @execstring='select COLUMN_NAME '+
'from ' + @dbname + '.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = ''' + @tablename + ''''
insert into @colnames(columnname)
exec sp_executesql @execstring
set @selectlist=''
set @fieldnamelist=''
--Loop through fieldnames, and build two strings
--One for outputting fieldnames and one for selecting the actual data
while exists(select * from @colnames)
begin
select top 1 @currentfieldname=columnname from @colnames
set @selectlist=@selectlist + 'quotename(['+ @currentfieldname + '],char(34)),'
set @fieldnamelist=@fieldnamelist + '''' + @currentfieldname + ''' [' +@currentfieldname + '],'
delete from @colnames where columnname=@currentfieldname
end
--remove last quote
set @selectlist=substring(@selectlist,1,len(@selectlist)-1)
set @fieldnamelist=substring(@fieldnamelist,1,len(@fieldnamelist)-1)
--Built string to execute, with fieldnames, and select fields
set @execstring='select ' + @fieldnamelist + ' union all select ' + @selectlist + ' from ' + @dbname + '..' + @tablename
return exec sp_executesql @execstring
end
END
this returns exactly what I want, but when I try to use it in a BCP statement, I get the error....
i.e.
EXEC master..xp_cmdshell 'bcp "exec QCDev.dbo.sp_QBMultiFileExportGetData ''tablename'',''dbname''" queryout C:\\outputfile.txt -T -t","'
Error = [Microsoft][SQL Native Client]BCP host-files must contain at least one column
Anyone ever tried this before?Hi Guys,
Thanks for the suggestions. I had been trying to avoid temp tables (don't really like them), but I think eventually, they were the only way to go. Unfortunately, this opened a whole can of scoping worms, and after a couple of hours, its all given me a right headache. However, the good news is I've finally got it working as I wanted.
I was finding I was having issues using temp tables, as the tables being used were dynamic, so I would have to create them in a dynamic SQL string, and they weren't propagating upwards from child to parent. I seemed to be getting the same problem using global temporary tables too, although I'm not sure why, as they should have worked They seemed to be out of scope by the time the SP that was calling my sp_QBMultiFileExportGetData tried to output the data. This might possibly have been because BCP wasn't seeing the same scope, but I've not tested it fully (and its very possible I was making a mistake).
The solution was to abandon sp_QBMultiFileExportGetData, and merge the code back into the calling script. However, rather than trying to pass an enormous SQL string to bcp, running it separately with sp_executesql, and dumping the results in a global temp table. Then let bcp just call a 'select * from temptable', to avoid the select statement getting too long. Its not the most elegant solution, but it seems to work fine.
ALTER PROCEDURE [dbo].[sp_QBMultiFileExport]
-- Add the parameters for the stored procedure here
@tablenames varchar(1000), --list of tables to be exported
@outputpath varchar(1000), --output path ***AS SEEN BY THE SERVER, NOT THE CLIENT***
@servername varchar(100), --Server where data resides
@dbname varchar(100), --database name
@delimiter varchar(1) --output delimiter
AS
BEGIN
declare @Execstring as nvarchar(max)
declare @currenttable as varchar(100)
declare @colnames table
columnname varchar(100)
declare @currentfieldname as varchar(100)
declare @selectlist as varchar(max)
declare @fieldnamelist as varchar(max)
--Get rid of CRLFs in the tablenames parameter
set @tablenames=replace(@tablenames,char(10),'')
set @tablenames=replace(@tablenames,char(13),'')
--add extra comma to the end of the list (needed later for consistency)
set @tablenames=@tablenames+','
--Get first table in the list
set @currenttable=substring(@tablenames,1,charindex(',',@tablenames)-1)
while @tablenames<>''
begin
--Get a list of fieldnames from syscols
insert into @colnames(columnname)
select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @currenttable
set @selectlist=''
set @fieldnamelist=''
while exists(select * from @colnames)
begin
--get first column name
select top 1 @currentfieldname=columnname from @colnames
--add to select statement lists
set @selectlist=@selectlist + 'quotename(['+ @currentfieldname + '],char(34)),'
set @fieldnamelist=@fieldnamelist + '''' + @currentfieldname + ''' [' +@currentfieldname + '],'
--remove column from temptable
delete from @colnames where columnname=@currentfieldname
end
--remove last quote from field lists
set @selectlist=substring(@selectlist,1,len(@selectlist)-1)
set @fieldnamelist=substring(@fieldnamelist,1,len(@fieldnamelist)-1)
--check for temp table, and drop if necessary
IF object_id('tempdb..##MultiFileExportTempTable') IS NOT NULL
BEGIN
DROP TABLE ##MultiFileExportTempTable
END
--Build list of fieldnames, and select list, unioned together
--and put the results in temptable
set @execstring='select ' + @fieldnamelist + ' into ##MultiFileExportTempTable union all select ' + @selectlist + ' from ' + @dbname + '..' + @currenttable
exec sp_executesql @execstring
--get BCP to pull data back from ##temptable, and dump in file
set @execstring='EXEC master..xp_cmdshell ''bcp "select * from ##MultiFileExportTempTable" queryout ' + @outputpath + '\' + @currenttable + '.txt' + ' -c -T -t"' + @delimiter + '"'''
exec sp_executesql @execstring
--drop tablename from list
set @tablenames=replace(@tablenames,@currenttable + ',','')
--if tablenames list is not empty, get the next one
if @tablenames<>''
set @currenttable=substring(@tablenames,1,charindex(',',@tablenames)-1)
else
set @currenttable=''
end
IF object_id('tempdb..##MultiFileExportTempTable') IS NOT NULL
BEGIN
DROP TABLE ##MultiFileExportTempTable
END
END
So, you call this with...
exec dbo.[sp_QBMultiFileExport] 'table1,table2,table3',filepath,servername,dbname,delimiter
...and it creates delimited files called table1.txt, table2.txt and table3.txt in the specified folder, with field headings and text qualifiers.
Many thanks for all your suggestions -
Dynamic Ranges and Dynamic SQL
Hi,
I have built a table of ranges and would like to use them in an sql query. Ive had a look but cannot think of a way to get this to work.
I have a table of fieldnames and a table of ranges. Does abap have a way of selecting a element from a table so I can generate the following sql.
select * from table
into some_table
where
'FIELD0' IN range[0] AND
'FIELD1' IN range[1] AND
'FIELD2' IN range[2] AND
'FIELD3' IN range[3] AND
I know how to build dynamic sql thats the easy bit. The hard bit is inserting a reference to a table element dynamically into the sql :S
Any help would be much appretiated,
Thanks,
Jameshi,
Yes, We can make use of Subroutine pools.
This is from F1 help about dynamic where..
1. This variant is exclusively for use with SELECT. The
internal table itab can only have one field which must be of
type C and not be greater than 72 characters. itab must be
specified in parentheses with no blanks between the
parentheses and the table name. The condition specified in
the internal table itab must have the same form as a
condition in the ABAP/4 source code. The following
restrictions apply:
- You can only use literals as values, not variables.
<b> - The operator IN cannot be used in the form f1 IN itab1. </b>
Regards,
Sailaja. -
Erratic Report Region Behavior with Dynamic SQL Queries
I'm running HTMLDB v 1.5.1.00.12 and I've noticed some odd behavior with report regions using dynamic SQL queries. Every so often, our testers will run a page containing a dynamic sql report region and get the following error, (despite the fact the query was working only moments ago and no other developer has touched it):
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
or sometimes
failed to parse SQL query:ORA-01403: no data found
The only solution I've found so far is to:
1) Make a copy of the failed report region.
2) Disable or delete the original failed report region.
The new copy of the report region runs without issue.
My search of the forums turned up the following two threads, but neither provided me with a clear explanation of the cause, and how to avoid it:
ORA-06502:PL/SQL: numeric or value error: character string buffer too small
Re: Import Export Error (ORA-06502)
The columns being returned are below the 4000 character limit, and the rows being returned are far less than 32k in size.
Could this have anything to do with the way HTMLDB is internally storing the PL/SQL used to generate the dynamic SQL Query? Is there any known issue related to this with that version of HTMLDB?
This problem occurs without any discernable pattern or consistency, making it hard to determine where I should focus my efforts in tracking down the cause.Hi all,
My report seems to be behaving correctly once i set it to "Use Generic Column Names (parse query at runtime only)" :)
Cheers,
Joel -
Comparintg times in a dynamic sql statement
I am working on a coversion procedure from one database to another. I have a move procedure that calls functions and the like .
I am trying to use dynamic sql and my where clause is giving me errors. What am I missing here ? TIA....
DEFINE DATECUTOFF ='11-JAN-05' of type date
DES_DATE is a date column in the 2nd database .... type date
I am building strings to do a create table from the 2nd database ...
Testwhere := q'[where to_char("des_date", 'DD-MM-YY') < '01-JAN-05]'; === works but I want to pass in date variable
Teststring := 'Create table '|| table_name || ' as select * from '|| second_table||'@'Linkname
execute immediate teststring || ''|| testwhere;
Testwhere := q'[where to_char("des_date", 'DD-MM_YY') < to_char(DATECUTOFF, 'DD-MON-YY')]; gives me errors like invalid number, or invalid type depending on where the quotes are or how I define DATECUTOFF
Any ideas of what I am doing wrong in comparing the two dates ?
Thanks.Sorry if I confused anyone ... we're working a duo effort here and get confused ourselves. Here's a summary of the effort.
We're on 11G Linux.
We're writing scripts, procedures and functions that will help us transition from a remote database (Ingres) to oracle. We plan to do this for many dbs, so we are using variables for the table names, links, etc ....
The Where clase that we are developing is pretty
complex, so our initial attempts to build it is
to make it into two sections as a "literal" , join them and do a execute immediate. A date fields seem to be the issue...
Our main procedure calls a datamove function to do the select from the remote data base....
DATECUTOFF is date;
TESTWHERE is varchar2(600);
TESTSTRING varchar2(600);
TestString := 'Create table '|| table_name_temp|| as select * from '||remote_table_name||'@'Linkname;
TestWhere :=q'[ Where ||des_date < 'DATECUTOFF'];
execute immediate Teststring || '' ||Testwhere;
Can I do this in dynamic plsql ? the des_date is the column from the remote database. DATACUTOFF comes from the main procedure passed in.
I do a DBMS_OUTPUT.Put_Line{teststring);
DBMS_OUPUT.Put_Line(testwhere);
and get the following on my screen
Create Table AC_KEY_TEMP as select * from ACK_KEY2@DBLINK2
where "des_date" = 11-Jan-05
DECLARE
Error at line 1;
ORA-00904 "JAN" invalid identfier
ORA- 06512 at datamove.datamove, line 146
ORA-06512 at line 49, which is the line for
the TestWHERE string.
so in the procedure, if DBMS_OUTPUT is correct, the execute immediate is operating on the where clause and it
thinks the JAN field is incorrect. I have put single quotes around it as well ...
Maybe you are looking for
-
Help me on my hp administra​tor password or power on power pls
Good Morning Pals, am using hp window 8 product, my junoir brother when ahaead to input power on password. he forget what he use. now my ready to print my project from it since day before yesterday. after i press the password he though he used 3 time
-
CFWINDOW referencing it's parent window.
Hello, I have a problem with CFWINDOW and I cannot work out what is wrong. I have create a CFWINDOW which it's "source" is pointing to another file. I understood that CFWINDOW is really a floating DIV, and that the CFWINDOW should be able to access a
-
Adobe Premiere 4 Elements 4 performance issue
Hi I am a new user of Premiere 4 Elements and I completed my first project to get myself through the learning curve. However I experience a serious performance issue on my computer with this product. Sorry about the long post, I tried to give as comp
-
HELP With This Big Problem (TEXT ON HOMESCREEN)
I need to know how to put my own text on my homescreen where the time and battery is etc ive read over some few threads im lost i need some steps please help i really would like this feature on my phone
-
Every Save prompts with Save As
Issue: A client of mine has accidentally updated their Adobe Reader from 9.5 to 10.1.3 incrementally. After they have done this, every time they open a PDF and make changes (it has fillable fields) then presses save, it always prompts with "Save As