Help !!! - regarding [b]ASCII[/b] sql function
Hello -
From oracle docs I got the following regarding ASCII function -
ASCII returns the decimal representation in the database character set of the first character of char and it works for first char only.
Question-
If I would like to 'decimal representation in the database character set' for all the characters in one column of table, just not the first character.
For the below data -
158 .abc
159 -abc
The following query -
select id,ascii(name) from temp
158 46
159 45
only returns for first character in the name column.
I want for the whole name column data presentation.
How it can be done ? is there any other function or some work-around.
Any help would be really appreciated.
Thank you so much
Rama....
You could certainly build your own function to do this, something like
create or replace function ascii_string( str IN VARCHAR2 )
RETURN VARCHAR2
IS
returnVal VARCHAR2(4000) := ' ';
BEGIN
FOR x IN 1..LENGTH(str)
LOOP
returnVal := returnVal || to_char( ASCII(SUBSTR(str, x)) ) || ' ';
END LOOP;
RETURN returnVal;
END;Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC
Similar Messages
-
Help regarding Triggers in pl/sql
I have written a table level trigger .
Purpose it to execute a procedure for every insert in a particular table.
the procedure arguments is dependent on that table .the problem is It is exceuting the trigger properly but it is not calling the procedure .
I have attaced the the trigger code with this thread.Please help me regarding this procedure .
CREATE OR REPLACE TRIGGER FISCAL_UPD
AFTER INSERT OR UPDATE
OF FISCAL_START_DATE
ON PARAMETER
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
fsd_trg DATE;
BEGIN
SELECT fiscal_start_date
INTO fsd_trg
FROM parameter;
DBMS_OUTPUT.put_line ('eXECUTED ' || fsd_trg);
timedim(fsd_trg);
DBMS_OUTPUT.put_line ('eXECUTED ' || :NEW.fiscal_start_date);
END;
Thanks
prasannaHi,
SELECT fiscal_start_date
INTO fsd_trg
FROM parameter;
Are you getting any errors?
will this table will have only one record?
Regards
RK -
Hi,
I want to use the EXTRACT function in Discoverer. I went through the Help for the «Import PL/SQL function» without success....
When I click the «Import» button, I see a HUGE list of functions, and I don't recognize which is the one I want.
I use that EXTRACT in the same database with PL/SQL developer and it works fine, but I get a «Function EXTRACT has not been registered with the EUL» message when I try to use it in Discoverer.
Any one knows how to «bring» the right function in the EUL ??
Thanks.I was able to import a Oracle standard package function SYS_CONTEXT and view it in Discoverer Desktop/Plus.
However when I create my own package function in a schema "xxdev" and then import via Disco Admin, I cannot view this function in Discoverer Desktop/Plus. These are the steps that I followed to implement it:
1. create package in xxdev schema
2. grant execute on package to noetix_sys & noetix_eul
3. register the function in Disco Admin
4. login to Disco Desktop/Plus and try creating a calculation field and lookup functions.
The function is not visible. I followed the exact same steps for STANDARD.SYS_CONTEXT function and it was visible. Is something missing in my steps to do?
Thanks in advance. -
Regarding sql function error for Hijri date to Gregorian date
Hi ,
I want to convert Hijri date format into Gregorian date format . i write the script with sql function like this
$Hijri_Date = '16/04/1428';
$Gregorian_Date = sql('DS_REPO','SELECT CONVERT(DATE,[$Hijri_Date],131)');
print($Gregorian_Date);
here $Hijri_Date data type is varchar and $Gregorian_Date data type is date.
but I am getting error like
7868 5812 DBS-070401 10/26/2010 10:37:18 PM |Session Job_Hijradata_Conversion
7868 5812 DBS-070401 10/26/2010 10:37:18 PM ODBC data source <UIPL-LAP-0013\SQLEXPRESS> error message for operation <SQLExecute>: <[Microsoft][SQL Server Native Client
7868 5812 DBS-070401 10/26/2010 10:37:18 PM 10.0][SQL Server]Explicit conversion from data type int to date is not allowed.>.
7868 5812 RUN-050304 10/26/2010 10:37:18 PM |Session Job_Hijradata_Conversion
7868 5812 RUN-050304 10/26/2010 10:37:18 PM Function call <sql ( DS_REPO, SELECT CONVERT(DATE,16/04/1428,131) ) > failed, due to error <70401>: <ODBC data source
7868 5812 RUN-050304 10/26/2010 10:37:18 PM <UIPL-LAP-0013\SQLEXPRESS> error message for operation <SQLExecute>: <[Microsoft][SQL Server Native Client 10.0][SQL
7868 5812 RUN-050304 10/26/2010 10:37:18 PM Server]Explicit conversion from data type int to date is not allowed.>.>.
7868 5812 RUN-053008 10/26/2010 10:37:18 PM |Session Job_Hijradata_Conversion
please help me out to solve this problem .
Please suggest any other solution to convert hijri date format to gregorian date format.
Thanks&Regards,
Ramana.Hi ,
In Data quality there is no inbuild function for converting hijri date to gregorian date . we have the function for converting julian date to gregorian date.
Thanks&Regards,
Ramana. -
hii All
I need help for pl/sql function.
I build a function for monthly attendance all employees.
but now i want to show all Sundays with 'S' and others respectively 'P' and 'A'.
Currently Sunday also shows 'A'
So please help
SQL queries ... like
SELECT DISTINCT AL.USERNAME,
CASE WHEN DAY1 =1 THEN 'P' ELSE 'A' END DAY1,
CASE WHEN DAY2 =1 THEN 'P' ELSE 'A' END DAY2,
CASE WHEN DAY3 =1 THEN 'P' ELSE 'A' END DAY3,
CASE WHEN DAY31 =1 THEN 'P' ELSE 'A' END DAY31
FROM
SELECT DISTINCT USERNAME, SUM(CASE WHEN
fromdt=TRUNC(L.LOGIN_DATE) THEN
1
ELSE
0
END) DAY1
,SUM(CASE WHEN
fromdt +1=TRUNC(L.LOGIN_DATE) THEN
1
ELSE
0
END) DAY2,
SUM(CASE WHEN
fromdt+30=TRUNC(L.LOGIN_DATE) THEN
1
ELSE
0
END) DAY31
FROM ( SELECT DISTINCT TRUNC(LOGIN_DATE)LOGIN_DATE ,USERNAME FROM FCDM_AUDIT_TRAIL_NEW WHERE
TRUNC(LOGIN_DATE) BETWEEN fromdt AND todt
-- to_date( login_date, 'dd-mom-yyyy') between to_date( fromdt, 'dd-mom-yyyy') and to_date( todt, 'dd-mom-yyyy')
) L
GROUP BY USERNAME
) AL;
how can i show matched Sundays and show with 'SUN' or 'S'
Regards
vij..Try this way:
SELECT USERNAME,
MAX(CASE WHEN to_char(fromdt,'d')='1' and fromdt=TRUNC(L.LOGIN_DATE) THEN 'S'
WHEN to_char(fromdt,'d')!='1' and fromdt=TRUNC(L.LOGIN_DATE) THEN 'P'
ELSE 'A') DAY1,
MAX(CASE WHEN to_char(fromdt+1,'d')='1' and fromdt+1=TRUNC(L.LOGIN_DATE) THEN 'S'
WHEN to_char(fromdt+1,'d')!='1' and fromdt+1=TRUNC(L.LOGIN_DATE) THEN 'P'
ELSE 'A') DAY2,
MAX(CASE WHEN to_char(fromdt+30,'d')='1' and fromdt+30=TRUNC(L.LOGIN_DATE) THEN 'S'
WHEN to_char(fromdt+30,'d')!='1' and fromdt+30=TRUNC(L.LOGIN_DATE) THEN 'P'
ELSE 'A') DAY31
FROM
(SELECT DISTINCT TRUNC(LOGIN_DATE) LOGIN_DATE,
USERNAME
FROM FCDM_AUDIT_TRAIL_NEW
WHERE TRUNC(LOGIN_DATE) BETWEEN fromdt AND todt
) L
Group by USERNAME
;Max
http://oracleitalia.wordpress.com -
Calling pl/sql function in CKM...pls help
Hi,
I have made a call to PL/SQL function in CKM customization. The code is :
declare
L_PMG_VALUE VARCHAR(3);
begin
L_PMG_VALUE:='PMG';
VALIDATE_PMG_VALUE(L_PMG_VALUE);
end;
When i run it, it throws error which says:
6550 : 65000 : java.sql.SQLException: ORA-06550: line 1, column 64:
PLS-00221: 'VALIDATE_PMG_VALUE' is not a procedure or is undefined
ORA-06550: line 1, column 64:
PL/SQL: Statement ignored
Function is compiled in the database and its working. I have selected the Technology as Oracle and correct Schema Name.
Please helpHi,
try the following way. i have not tried ....i think it helps you.
In which schema you have created that procedure.
Does the ODI user mantioned in topology have execute permissions on the procedure? if the ODI user have execute previlage on the procedure then in CKM customisation call the procedure like <schema>.<procedure>.
Please let me know any issues.
Thanks, -
Help w/MaxDB Function; also: how does the "Debug SQL" function work?
Hi there forum folks,
In my former life, I was a Basis guy, but I haven't had the pleasure of working directly with SAP applications in a few months. My current project is to attempt to use MaxDB in a real estate environment. We're tracking home listings so that we can build statistical reports... such as "what agents are in the Top 100 in postal code X?"
Anyway, as part of this project, I have attempted to construct my very first MaxDB database function. Unfortunately, it doesn't give me the answers I'm hoping to see. Here's the function:
CREATE FUNCTION COUNT_LISTINGS (AGENTID CHAR(10)) RETURNS FIXED(6,1) AS
VAR COLISTINGAGENTID CHAR(10);
LISTINGAGENTID CHAR(10);
MLSNUMBER CHAR(7);
UNITS FIXED(6,1);
SET UNITS = 0;
DECLARE FUNCTIONRESULT CURSOR FOR
SELECT MLSNUMBER,
LISTINGAGENTID,
COLISTINGAGENTID FROM FREDDIE.GLAR_SOLDS
WHERE LISTINGAGENTID = :agentid OR COLISTINGAGENTID = :agentid;
IF $COUNT IS NULL THEN
BEGIN
CLOSE FUNCTIONRESULT;
RETURN UNITS;
END
ELSE
SET $RC = 0;
WHILE $RC = 0 DO BEGIN
FETCH FUNCTIONRESULT INTO :mlsnumber, :listingagentid, :colistingagentid;
IF ( LISTINGAGENTID = AGENTID AND COLISTINGAGENTID IS NULL ) OR
( COLISTINGAGENTID = AGENTID AND LISTINGAGENTID IS NULL ) THEN
SET UNITS = UNITS + 1
ELSE
SET UNITS = UNITS + 0.5;
END;
CLOSE FUNCTIONRESULT;
RETURN UNITS;
I've tried to follow the official MaxDB documentation. My first deviation from that standard was the use of the "$COUNT" variable (instead of the "$RC" variable) immediately after the DECLARE/SELECT statement above. When I tried to use $RC, for either a successful or unsuccessful query, $RC was always set to a non-zero value.
I believe I'm past that, but now my issue is down around that FETCH statement. The UNITS variable doesn't end up with the value I expect. I know that it can be terribly confusing to try to analyze someone else's logic, but here's a brief narrative that describes what I'm trying to do...
The GLAR_SOLDS table holds one line for each home sold. It's keyed by the MLSnumber. Each record also stores up to four agents who've been involved in the transaction: the listing agent, the co-listing agent, the selling agent, and the co-selling agent. The database function I've written above pertains to the listing side only. If I can get this to work, a separate function will process the selling side. If no co-listing agent is involved in a given sell, that agent should get credit for 1 unit sold. If he/she has help from a co-listing agent, the agent should only get credit for 1/2 unit sold.
Also, does anyone know how the "Debug SQL" functionality is supposed to work within Database Studio? When I right-mouse click on my function, and follow the path thru "Debug As...", after entering the connection & function arguments, I'm presented with an empty screen. If you could point me to some documentation somewhere, I'd gratefully read it.
I'm using MaxDB 7.7.06.09 on Windows XP (WIN32) with MaxDB Database Studio 7.7.06.09 (build 009-123-202-944).
Thanks everyone for your help & advice.
~FredFred,
please either provide the full SQL statements for your example or stick with mine.
I'm not going to build it up myself a second time to suit yours now.
> But now, my issue is how do I store the resultant data in its own table?
So where is the problem?
INSERT INTO <target table> (field 1, field 2, ...) (<your query>) UDPATE DUPLICATES-
With my tables this looks like this:
create table sell_result (list_agent varchar(20) primary key, SUM_CREDIT fixed (10,2))
insert
into sell_result (list_agent,sum_credit)
( select list_agent, sum (credit) as SUM_CREDIT
from ( select sh.object_id,lag.name as list_agent, 1 as credit
from soldhomes sh join agents lag on lag.id = sh.list_agent_id
union all
select sh.object_id, lag.name as list_coagent, 0.5 as credit
from soldhomes sh join agents lag on lag.id = sh.list_coagent_id
group by list_agent
update duplicates
Check what we have now
sqlcli db770=> select * from sell_result
| LIST_AGENT | SUM_CREDIT |
| -------------------- | ----------------- |
| Lars | 4.50 |
| Lisa | 3.00 |
| Mona | 2.50 |
| Paul | 2.50 |
4 rows selected (600 usec)
Now add some sales data...
Insert into soldhomes values (11, 1, 2, NULL, NULL)
Insert into soldhomes values (12, 2, NULL, NULL, NULL)
Insert into soldhomes values (13, 2, NULL, NULL, NULL)
Re-run the INSERT command and you're done:
sqlcli db770=> select * from sell_result
| LIST_AGENT | SUM_CREDIT |
| -------------------- | ----------------- |
| Lars | 5.50 |
| Lisa | 3.00 |
| Mona | 5.00 |
| Paul | 2.50 |
4 rows selected (390 usec)
Neat, isn't it? -
Help regarding MBeanServerConnection queryName function
Hi guys, i recently start using JMX and i need some help regarding queryName function. I want to get a specific set of objectNames, not all of them.
I have the following List of Beans
ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers,serverId=14b69d-eee40f3d6467,name=LoadBalancerServer
ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers,serverId=40-a0b2-f1dfb314406f,name=LoadBalancerServer
ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers,serverId=98-4af4-9147-bf45fb49c044,name=LoadBalancerServer
ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers,serverId=c-4bf6-9c42-d5c3acea6662,name=LoadBalancerServer
ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,name=LoadBalancerListener
ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,name=LoadBalancerRedirector
ObjectName = WowzaMediaServerPro:mediaCache=MediaCache,name=IOPerformance
ObjectName = WowzaMediaServerPro:mediaCache=MediaCache,name=MediaCache
ObjectName = WowzaMediaServerPro:mediaCache=MediaCache,name=PendingReadAheadRequestTracker
ObjectName = WowzaMediaServerPro:mediaCache=MediaCache,name=PendingWriteRequestTracker
ObjectName = WowzaMediaServerPro:name=Connections
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=Connections
ObjectName = WowzaMediaServerPro:name=HandlerThreadPool
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=HandlerThreadPool
ObjectName = WowzaMediaServerPro:name=IOPerformance
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=IOPerformance
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=IOScheduler
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=chat,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=default,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=file,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=live,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=live-lowlatency,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=live-record,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=live-record-lowlatency,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-buffer,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-edge,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-edge-lowlatency,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-edge-origin,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-origin,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=netconnection,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=record,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-buffer,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-buffer-lowlatency,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-buffer-record,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-buffer-record-lowlatency,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-live,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-live-lowlatency,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-live-record,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-live-record-lowlatency,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtpout,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=shoutcast,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=shoutcast-buffer,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=shoutcast-buffer-record,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=shoutcast-record,name=Properties
ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=Properties
ObjectName = WowzaMediaServerPro:name=Server
ObjectName = WowzaMediaServerPro:name=ServerNotifications
My question is that , how can i get those rows that contains "WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers"?
Please helpHello ,
There should be a number of BRF+ tutorials available in SCN which discuss the FDT APIs. You can have a look at them to get an idea of the various APIs available and their uses.
For your usecase, you should do the following.
lo_fdt_function TYPE REF TO if_fdt_function,
lo_fdt_result TYPE REF TO if_fdt_result,
* Get function handle
CALL METHOD lo_fdt_factory->get_function
EXPORTING
iv_id = lv_function_id
RECEIVING
ro_function = lo_fdt_function.
where lv_function_id is the GUID of the BRF+ function . You can either make it a constant , or you can use a FDT API to get the function GUID from the BRF+ application name and function name.
* Set function context
TRY.
CALL METHOD lo_fdt_context->set_value
EXPORTING
iv_id =
ia_value =
This is one way to set the input context ( pass the input to the BRF+ function to process ). There are other ways to do this as well. Which one you use would depend on the kind of input you want to pass.
* Execute BRFPLUS function
TRY.
CALL METHOD lo_fdt_function->process
EXPORTING
io_context = lo_fdt_context
IMPORTING
eo_result = lo_fdt_result.
* Get result output
TRY.
CALL METHOD lo_fdt_result->get_value
IMPORTING
ea_value =
Another direct way of doing it would be to use the method PROCESS of the class CL_FDT_FUNCTION_PROCESS.
I have not gone into much explaination here , but it should provide you an idea of how you can go about it.Read the SCN docs on the APIs to get a better idea , or better still if you can get hold of a copy of the BRF+ book by Carsten Ziegler , you will get an end to end explaination of all BRF+ APIs in it.
Regards,
Indranil. -
Help regarding VARI() function
Hi All,
I need more information, and if possible some example on how to use VARI() function.
Thanks for your help.
Regards,
ShankarHi Shankar,
While VARC function is used to get the number of values available for the
variable, as Anand mentioned VARI function is used to get the value of the
variable.Usually they are used in conjunction.
Here is the sample code:
DATA L_COUNTRY TYPE 0COUNTRY.
DATA L_COUNT TYPE I.
DATA L_ENTRIES TYPE I.
L_COUNT = 0.
L_ENTRIES = VARC(COUNTRY).
DO.
L_COUNT = L_COUNT + 1.
L_COUNTRY = VARI(COUNTRY, L_COUNT).
{L_COUNTRY,NETSALES} = {L_COUNTRY,VOLUME} * {#,PRICE}.
IF L_COUNT = L_ENTRIES.
EXIT.
ENDIF.
ENDDO.
Hope this helps.
Cheers
Srini -
URgent: Help regarding SQL Query
Hi ,
I need help regarding an sql query.
Sample Data:
ITEM_TYPE ITEM_NUM UNIT_PRICE QUANTITY LINE_TOTAL
ITEM 1 5 10 50
ITEM 2 10 5 50
ITEM 1 5 5 25
ITEM 2 10 20
TAX 16.5
TAX -3.5I would like to display the data as
ITEM_TYPE ITEM_NUM UNIT_PRICE QUANTITY LINE_TOTAL
ITEM 1 5 15 145
2 10 5
2 10
TAX 13.0
Line_total = unit_price * QuantityThanks in Advance
G.Vamsi Krishna
Edited by: user10733211 on Aug 5, 2009 7:42 AM
Edited by: user10733211 on Aug 5, 2009 7:49 AM
Edited by: user10733211 on Aug 5, 2009 8:12 AM
Edited by: user10733211 on Aug 5, 2009 8:22 AM
Edited by: user10733211 on Aug 5, 2009 8:24 AMHi,
Try this, use some analytics:
SQL> with t as (
2 select 'item' item_type, 1 item_num, 5 unit_price, 10 quantity, 50 linetotal from dual union all
3 select 'item', 2, 10, 5, 50 from dual union all
4 select 'item', 1, 5, 5, 25 from dual union all
5 select 'item', null, 2, 10, 20 from dual union all
6 select 'tax', null, null, null, 16.5 from dual union all
7 select 'tax', null, null, null, -3.5 from dual
8 ) -- actual query starts here:
9 select item_type
10 , item_num
11 , unit_price
12 , sum_qty
13 , case when sum_lt = lag(sum_lt) over ( order by item_type, item_num )
14 then null
15 else sum_lt
16 end sum_lt
17 from ( select item_type
18 , item_num
19 , unit_price
20 , quantity
21 , sum(quantity) over ( partition by item_type, item_num ) sum_qty
22 , sum(linetotal) over ( partition by item_type ) sum_lt
23 , row_number() over ( partition by item_type, item_num order by item_type, item_num ) rn
24 from t
25 )
26 where rn=1;
ITEM ITEM_NUM UNIT_PRICE SUM_QTY SUM_LT
item 1 5 15 145
item 2 10 5
item 2 10
tax 13
4 rows selected.
edit
And please use the code tag, instead of clunging with concats.
Read:
http://forums.oracle.com/forums/help.jspa
Edited by: hoek on Aug 5, 2009 5:15 PM
edit2
Also nulls for item_type:
ops$xmt%OPVN> with t as (
2 select 'item' item_type, 1 item_num, 5 unit_price, 10 quantity, 50 linetotal from dual union all
3 select 'item', 2, 10, 5, 50 from dual union all
4 select 'item', 1, 5, 5, 25 from dual union all
5 select 'item', null, 2, 10, 20 from dual union all
6 select 'tax', null, null, null, 16.5 from dual union all
7 select 'tax', null, null, null, -3.5 from dual
8 ) -- actual query starts here:
9 select case when item_type = lag(item_type) over ( order by item_type, item_num )
10 then null
11 else sum_lt
12 end item_type
13 , item_num
14 , unit_price
15 , sum_qty
16 , case when sum_lt = lag(sum_lt) over ( order by item_type, item_num )
17 then null
18 else sum_lt
19 end sum_lt
20 from ( select item_type
21 , item_num
22 , unit_price
23 , quantity
24 , sum(quantity) over ( partition by item_type, item_num ) sum_qty
25 , sum(linetotal) over ( partition by item_type ) sum_lt
26 , row_number() over ( partition by item_type, item_num order by item_type, item_num ) rn
27 from t
28 )
29 where rn=1;
ITEM_TYPE ITEM_NUM UNIT_PRICE SUM_QTY SUM_LT
145 1 5 15 145
2 10 5
2 10
13 13
4 rows selected.If you really need a space instead of nulls, then simply replace the nulls by a space....
Edited by: hoek on Aug 5, 2009 5:18 PM -
Hi, I am trying to write a sql query to replace the string starting with '<' with NULL. Right now I am using CASE statement to replace with NULLs. Is there any function to replace with NULLs for all the strings starting with '<%'.
Example:
CASE When field_name LIKE '<%' then NULL else field_name
(before) After
<NA> NULL
<UK> NULL
I want to replace the above sql suery with a single sql function without using CASE statements.
I tried to use REPLACE function, but it replaces only single character. I want to replace the whole string
Thanks in advance.Hi,
Adam Martin posted a good solution. I hope that it is clear to you that you have to replace the string '<NA>' with your column(s).
I.e.:
SELECT REGEXP_REPLACE (a.col1, '^<.?+', '') AS col1
, REGEXP_REPLACE (a.col2, '^<.?+', '') AS col2
FROM table1 a;
{code}
You can use also the DECODE and SUBSTR functions to have the same result:
The code below will get the first character with SUBSTR function and the DECODE function will return NULL if the value of the first character is "<" otherwise the value of the column.
{code:sql}
SELECT DECODE(SUBSTR(a.col1,1,1),'<', NULL, a.col1) AS col1
, DECODE(SUBSTR(a.col2,1,1),'<', NULL, a.col2) AS col2
FROM table1 a;
{code}
but using REGEXP_REPLACE is easier to write. -
LOOP in PL/SQL Function Body Help Needed
I have a PL/SQL function that I'm trying to run and use a LOOP but I'm having some problems. I know the loop works since it output's two commas for me, which is how many records the query used for the LOOP returns, but I can't seem to find the right syntax to reference the column.
DECLARE
str VARCHAR2(2000) := "";
BEGIN
IF :P21_GLOBAL_ID IS NOT NULL THEN
FOR q IN (
SELECT
ID,
DRAW_DATE,
ENTERED_BY
FROM
SAMPLE_T
WHERE
ID = :P21_GLOBAL_ID
ORDER BY
DRAW_DATE
LOOP
str := str || q.ID || ',' ;
END LOOP;
END IF;
RETURN STR
END;I just sent you the credentials.
Interestingly, I have this same code for the source of a textarea on the page and the source for a report. I then modified the PL/SQL code as follows:
DECLARE
varSelect VARCHAR2(32767) := ''; --hold query SELECT definition
varFrom VARCHAR2(32767) := ''; --hold query FROM clause definition
varWhere VARCHAR2(32767) := ''; --hold query WHERE clause definition
varOrderBy VARCHAR2(32767) := ''; --hold query ORDER BY clause definition
varQuery VARCHAR2(32767) := ''; --hold query definition
BEGIN
IF TRIM(LOWER(TO_NUMBER(:P21_GLOBAL_TEMPLATE_ID))) IS NOT NULL THEN
varSelect := 'SELECT SUBJECT_ID';
varSelect := varSelect || ', SUBJECT_ID AS PHI';
varSelect := varSelect || ', SUBJECT_ID AS ENTER_DATA';
varSelect := varSelect || ', SUBJECT_ID AS LOGISTICA';
for varTempQuery IN (
SELECT
stc.question_name as field_name,
sti.read_security,
sti.write_security,
nvl(sti.validation_type,decode(stc.validation_rules,'None','TEXT_FIELD')) as validation_type,
sti.html_caption,
nvl(upper(sti.html_display_type),'TEXTFIELD') as html_display_type,
sti.html_table_row,
sti.html_table_column
FROM
rix.study_subject_templates sst,
rix.study_subject_Template_items sti,
rix.questions stc
WHERE
TRIM(LOWER(TO_NUMBER(sst.ss_template_Id))) = TRIM(LOWER(TO_NUMBER(:P21_GLOBAL_TEMPLATE_ID)))
AND TRIM(LOWER(TO_NUMBER(sst.ss_Template_id))) = TRIM(LOWER(TO_NUMBER(sti.ss_Template_id)))
AND TRIM(LOWER(TO_NUMBER(sti.phi_qid))) = TRIM(LOWER(TO_NUMBER(stc.qid)))
AND TRIM(LOWER(TO_CHAR(sti.template_item_Status))) <> TRIM(LOWER(TO_CHAR('RETIRED')))
ORDER BY
sti.html_Table_row,
sti.html_table_column
LOOP
varSelect := varSelect || ', ' || varTempQuery.field_name;
END LOOP;
varFrom := 'FROM RIX.SUBJECTS';
varWhere := 'WHERE STUDY_ID = ' || TRIM(LOWER(TO_NUMBER(:P21_STUDY_ID )));
varOrderBy := 'ORDER BY';
varOrderBy := varOrderBy || ' subject_label ';
varQuery := varSelect || ' ' || varFrom || ' ' || varWhere || ' ' || varOrderBy;
ELSE
varQuery := 'SELECT SUBJECT_ID FROM SUBJECTS WHERE study_id = :P21_STUDY_ID;';
END IF;
RETURN varQuery;
END;
When I run the page now, the textarea has the SQL statement generated from the first IF block, but the report using the statement from the ELSE block. I thought it maybe was a timing issue, but both blocks reference other fields on the page, so it doesn't seem to be a timing issue. Shouldn't be a condition issue either with the IF block as the textarea and report use the same source, but are evaluating differently.
Very odd (to me at least). -
Problem with empty report parameters when passed to PL/SQL function
Hi,
We have come across what appears to be a bug in the JRC. When passing a report parameter to a PL/SQL function as a parameter, empty parameters are changed before being sent to the function. More specifically, an empty string "" ends up as the value "(')" in the PL/SQL function parameter. In our report we print the report parameters on the first page so we know that the parameters are OK before being passed to the database.
The problem exists for version 12.2.203, 12.2.204 and 12.2.205 of the JRC.
We have identified a workaround, but it is not exactly elegant: Before executing the report we modify all empty parameters ("") to " " . In the PL/SQL function, we trim all parameters before using them.
We call the function using a command object with a sql syntax like this example:
select * from table (qa_batch_release.get_qa_br('{?p_report_id}','{?p_reg_set_number}','{?p_cr_number}','{?p_change_id_decode}','{?p_country_id}','{?p_mfg_item_no}','{?p_4_no}','{?p_5_no}','{?p_7_no}'))
The PL/SQL function is a table returning function.
Best regards, ThorHi Kishore,
using #COLUMN_VALUE# would probably not make much sense, because normally a report has multiple columns and not just the numeric column which you want to verify if it's negative. But APEX will fire the template condition for each column, because the report template is a column cell template.
What you can do to make it more generic is to use for example
#CHECK_AMOUNT#
in the template and provide a not displayed column in your SQL statement which contains your value which is named CHECK_AMOUNT. For example:
SELECT NAME
, BALANCE
, BALANCE AS CHECK_AMOUNT
FROM XXX;Because this CHECK_AMOUNT column would be a generic name, you can use this template in all your reports as long as you provide this column.
Thope that helps
Patrick -
Pass a value from a PL/SQL function to a javascript (html header) ? ?
Hey Guys,
Have a question regarding how to pass a value from a PL/SQL function to a javascript in the HTML Header.
I have created a PL/SQL function in my database, which does looping.
The reason for this is: On my apex page when the user selects a code, it should display(or highlight buttons) the different project id's present for that particular code.
example= code 1
has project id's = 5, 6, 7
code 2
has project id's = 7,8
Thank you for your Help or Suggestions
Jesh
The PL/SQL function :
CREATE OR REPLACE FUNCTION contact_details(ACT_CODE1 IN NUMBER) RETURN VARCHAR2 IS
Project_codes varchar2(10);
CURSOR contact_cur IS
SELECT ACT_CODE,PROJECT_ID
FROM ACTASQ.ASQ_CONTACT where ACT_CODE = ACT_CODE1;
currec contact_cur%rowtype;
NAME: contact_details
PURPOSE:
REVISIONS:
Ver Date Author Description
1.0 6/25/2009 1. Created this function.
BEGIN
FOR currec in contact_cur LOOP
dbms_output.put_line(currec.PROJECT_ID || '|');
Project_codes := currec.PROJECT_ID|| '|' ||Project_codes;
END LOOP;
RETURN Project_codes;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END contact_details;
/Jesh:
I have made the following modifications to your app to get it to work as I thing you need it to.
1) Changed the source for the HTML Buttons Region(note use of id vs name for the Buttons)
<script>
function hilitebtn(val) {
//gray buttons
$x('graduate').style.backgroundColor='gray'
$x('distance').style.backgroundColor='gray'
$x('career').style.backgroundColor='gray'
$x('photo').style.backgroundColor='gray'
//AJAX call to get project-ids
var get = new htmldb_Get(null,$x('pFlowId').value,'APPLICATION_PROCESS=GETPROJECTS',0);
get.addParam('x01',val)
gReturn = get.get();
var arr=gReturn.split(':'); //dump into array
get = null;
for (i=0;i<arr.length;i++) {
// alert('val=' + arr);
if ( arr[i]==5)
$x('graduate').style.backgroundColor='red';
if ( arr[i]==6)
$x('distance').style.backgroundColor='red';
if ( arr[i]==7)
$x('career').style.backgroundColor='red';
if ( arr[i]==8)
$x('photo').style.backgroundColor='red';
</script>
<table cellpadding='0' cellspacing='0' border='0'>
<tr><td>
<input type='button' id='graduate' value='Graduate'>
</td>
<td>
<input type='button' id='distance' value='Distance'>
</td>
<td>
<input type='button' id='career' value='Career/Tech'>
</td>
<td>
<input type='button' id='photo' value='Photos'>
</td>
</tr></table>
2) Defined the application process GETPROJECTS as DECLARE
IDS varchar2(1000);
l_act_code varchar2(100) :=4;
begin
IDS:='';
l_act_code := wwv_flow.g_x01;
for x in(
SELECT ACT_CODE,PROJECT_ID
FROM ASQ_CONTACT
where ACT_CODE = l_act_code)
LOOP
IDS := IDS || X.PROJECT_ID|| ':' ;
END LOOP;
HTP.PRN(IDS);
END;
3) Changed the 'onchange' event-handler on p1_act_code to be 'onchange=hilitebtn(this.value)'
4) Added the JS to the HTML Page Footer <script>
hilitebtn($v('P1_ACT_CODE'));
</SCRIPT> -
Is it possible to retrieve RAD's extended variables with a pl/sql function?
Good morning everyone,
We have our forms and reports(10g) application, SSO enabled and we are using OID on 10g app server. some of our users use smart card to log in to the system and some who do not have smart cards provide their database userid, password and SID.
In the case of users who login with smart card, as a one time effort, they have to register their smart card. At that point OID presents a form prompting for their username, password, sid and then a RAD record is created for that particular user.
And from then on when the user enters the system using his smart card(12345@mil), forms servlet, does the look up of dbusername,dbpswd,sid which belong to the 12345@mil and user's database credentials are passed to the application. The entire application logic is based on that userid which is also an internal userid in the application. Everything is working fine.
I have read the documentation and found that 12345@mil is stored in the "cn" parameter and the orclownerguid and orclusernameattribute are stored under "cn"=extended properties in the oid. I am able to see this from the oid console.
But now I need some help. If I only know the id of the user as "12345@mil" , is it possible to manually query the RAD and retrieve the orclusername from a pl/sql function?
Any help is greatly appreciated.
Regards,
Suma.Please can anyone help me????
Regards,
Suma.
Maybe you are looking for
-
Stuck on the loading page for 5 hours
My Macbook Pro is stuck on the loading page since 4 this afternoon and nothings has change since tthen, I try to close it, reopen it and nothing happen, I even try to plug it and nothings happens, I don't know what to do. If someone can help me that
-
Recovery partition isnt working
hello everyone i have a toshiba satellite l505d-s5983 laptop. i have been having problems with this laptop for the past 2 weeks and it hasnt stopped. i was able to reset my laptop and i even got rid of the error message i used to have before the wind
-
Elements 11 finds photos but says it can not download them
Photoshop Elements 11 downloaded most of my photos, but there are 167 left that it has not. It gave me a message that said it could not download them because either my battery was load or that the camera was not securely connected. I tried changing
-
i am trying to restore and update my iphone 3g which i have just brought but it keeps saying iphone cannot be restored error code 1015 can anybody help please?
-
How to download videoclips form iphone
How can I download video clips from my Iphone to my Mac ?