Using "between" for the literals inside the 'where' clause
Hi allI have run the following queries in 10.g HR XE diagram example:
The first query is limited by characters between 'I' and 's', where the second query is limited to words between "IT" and "Sales".
My question is, how did the first query will not return not row "Sales" as it does in the second? I don't understand not how 'between' works on string literals. Help, please.
Kind regards
Valerie
SQL> select department_name from departments where department_name between 'I' a
nd 'S' order by department_name;
DEPARTMENT_NAME
------------------------------
IT
IT Helpdesk
IT Support
Manufacturing
Marketing
NOC
Operations
Payroll
Public Relations
Purchasing
Recruiting
DEPARTMENT_NAME
------------------------------
Retail Sales
12 rows selected.
SQL> select department_name from departments where department_name between 'IT'
and 'Sales' order by department_name;
DEPARTMENT_NAME
------------------------------
IT
IT Helpdesk
IT Support
Manufacturing
Marketing
NOC
Operations
Payroll
Public Relations
Purchasing
Recruiting
DEPARTMENT_NAME
------------------------------
Retail Sales
Sales
13 rows selected.
Imagine how these words are ordered in an encycopedia or a thesaurus.
1. I have
2.
3 IT Helpdesk
4. technical support
5 manufacturing
6 marketing
7 AC
8 operations
9 payroll
10. public relations
11 purchase
12 recruitment
13 S
14 sales
15. management system
"S" is ordered before "Sales". Between includes everything including the lower and the upper limit (row 1-13). It does not include things in order AFTER the upper limit (line 14 ++).
So, if you want to find everything that begins with "S", then you have several options.
(1) show all after including 'I' but before the "T" (not including T)
select department_name
from departments
where department_name >= 'I'
and department_name < 'T'
order by department_name;
or
(2) show all what the first letter between "I" and "S".
select department_name
from departments
where substr(department_name,1,1) between 'I' and 'S'
order by department_name;
Almost always, I would choose the first option. Usually it's faster as a clue to the name of the service can be used if there is a.
There is a third option. But it's kind of stupid and incomplete. You could add the last string you can imagine as the upper limit of between it the function.
select department_name
from departments
where department_name between 'I' and 'Szzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'
order by department_name;
Published by: Sven w. on December 14, 2010 12:54 - added a third option
Tags: Database
Similar Questions
-
Try adding conditions to clause "and" stored in the table for the where clause, unknown syntax
I am trying to add additional segments to the 'where' clause, and I don't know exactly how to proceed. I am currently using another table to search for keywords and sometimes there aren't everything. I use this table containing the key words to search the description and associate a symbol with a path.
The code loops through the keywords with the keywords most associated and try to find links to a symbol then excludes those and search for symbols that correspond to those with less keywords and all. I am able to do this with 6 queries and manually changing the arguments, but I want to loop together so that if the changes need to be made in the future, I won't need to go digging in the code.
Thanks, but that's ok. I already have a solution for this.
-
SELECT LIST throws an error for the WHERE CLAUSE
Hi all
I am struck with what looks like a trivial mistake, but I don't know how he moved. I'm new to Apex (3.1). I'm experimenting with. I have Oracle 10 g on Windows.
I have a drop-down list item in one of my pages (SELECTION list). I'm trying to display a few items he dynamically (depending on the logged-in user). I've defined this SELECT LIST and entered into the following query in "list of values".
I got the following error.select enrolled_course display_value, course_id return_value from COMP_LIST where stu_id = :APP_USER order by 1
Then I tried the step by step instructions of "Oracle® Application Express Advanced Tutorials-version 3.1.2 - E10497-02. With the help of creating list of values such as creating separately. That too, I got the same error.1 error has occurred LOV query is invalid, a display and a return value are needed, the column names need to be different. If your query contains an in-line query, the first FROM clause in the SQL statement must not belong to the in-line query.
I'm doing it wrong I suppose. Please correct me. Thanks in advance
Regarding
Guru
Published by: guru Perrin on October 16, 2008 17:12Hello
The principle should be the same. The value of the text element would be stored in the session, then you can use: P1_APP_USER (or what is called the element) instead of: APP_USER. To be absolutely certain, you can create a page process to fill the element having the value of APP_USER point process before conditional header field is null. Or you could create a component of demand that populate once the connection and then use it everywhere where you have - I tend to do something like this with user-specific information that is stored in my tables from the user.
Andy
-
T/t with the WHERE clause using a list breaks
Hello, all,.
I have a project where I need to use a list as part of the WHERE clause for a t/t, and it is breaking. I don't know what I'm doing wrong.
For some pseudo-code, do I have a complete query of a database called 'people '. A list of values for the t/t with the first query; the second query is my t/t:
<cfquery name="getDIR" datasource="#request.THISDSN#"> SELECT thisName dir FROM orgs WHERE thisID in (<cfqueryparam value="#form.org#" cfsqltype="cf_sql_varchar" list="yes" />) </cfquery> <cfquery name="people" database="people"> SELECT colA, colB, colC, colD FROM people WHERE 1=1 AND ( div IN (<cfqueryparam value="#valueList(getDIR.dir)#" cfsqltype="varchar" list="yes" />) OR dir IN (<cfqueryparam value="#valueList(getDIR.dir)#" cfsqltype="varchar" list="yes" />) ) </cfquery>
I get the error message is "t/t syntax error: encountered" div IN \'thisValue\' ".» Incorrect conditional expression, waiting for one of [as | null | between | in | comparison] condition. »
Can support _not_ QoQ lists of WHERE clauses?
V/r,
^_^
SMH - so much... I just found.
I forgot to give the lists in the second query bracket.
(The pseudocode was manually typed, since my dev system is isolated from the internet, and I added the in my pseudo code when they were not in my original code.)
* headdesk * headdesk * headdesk * headdesk *.
V/r,
^_^
-
DECODE inside the WHERE clause
Hi all:
I can't get the DECODE statement to work inside my WHERE clause. I have read the information on
Tahiti.Oracle.com
http://download.Oracle.com/docs/CD/E11882_01/server.112/e17118/functions049.htm#i1017437
But still can not get it to work. Initially, I had he works as dynamic SQL and then run that string, but I am not allowed to use dynamic SQL statements and to do 'Real' PL/SQL.
I have the following WHERE clause (more info after the WHERE clause)
As you can see, initially I was adding values of "whereClauseStatus, whereClauseFromDate, whereClauseToDate" and it has been defined with the following PL/SQL code:WHERE a.ebiz_asn_no(+) = te.ebiz_cntrl_no AND w.ebiz_work_no(+) = te.ebiz_cntrl_no AND o.ebiz_ord_no(+) = ebiz_cntrl_no AND t.ebiz_trailer_no(+) = te.ebiz_trailer_no AND ms.ebiz_sku_no(+) = te.ebiz_sku_no AND NVL(ms.ebiz_sku_no, -1) = NVL(p_SKU, nvl(ms.ebiz_sku_no, -1)) AND tl.ebiz_lp_no(+) = te.ebiz_lp_no AND NVL(te.ebiz_lp_no, -1) = NVL(p_LP, nvl(te.ebiz_lp_no, -1)) AND eu.ebiz_user_no(+) = te.act_ebiz_user_no AND NVL(te.act_ebiz_user_no, -1) = NVL(p_UserID, NVL(te.act_ebiz_user_no, -1)) AND NVL(te.begin_location, '~') = NVL(p_BeginLocation, NVL(te.begin_location, '~')) AND NVL(te.end_location, '~') = NVL(p_EndLocation, NVL(te.end_location, '~')) AND te.comp_id = p_CompID AND te.site_id = p_SiteID AND INSTR('' || p_TaskType || '', te.task_type) > 0 AND NVL(task_priority, -1) = NVL(p_Priority, NVL(task_priority, -1)) AND NVL(te.ebiz_cntrl_no, -1) = DECODE(te.task_type, 'IULD', DECODE(p_Order, null, te.ebiz_cntrl_no, ebiz_po2asn.get_ebiz_po_no(p_Order)), NVL(p_Order, NVL (te.ebiz_cntrl_no,-1))) AND NVL(te.batch_no,'~') = NVL(p_Batch, NVL(te.batch_no, '~')) AND NVL(te.ebiz_wave_no, -1) = NVL(p_Wave, NVL(te.ebiz_wave_no, -1)) || whereClauseStatus || whereClauseFromDate || whereClauseToDate;
I have serious problems getting the DECODE statement to replace the three variables in the annex.IF(p_TaskStatus = 'C') THEN ------------------------------------------------------------------------------------------- -- Set From Date Clause ------------------------------------------------------------------------------------------- IF(p_FromShipDate IS NOT NULL) THEN whereClauseFromDate := ' AND TRUNC(te.act_end_date) >= TO_DATE(''' || p_FromShipDate || ''',''MM/dd/yyyy'') '; END IF; ------------------------------------------------------------------------------------------- -- Set To Date Clause ------------------------------------------------------------------------------------------- IF (p_ToShipDate IS NOT NULL) THEN whereClauseToDate := ' AND TRUNC(te.act_end_date) <= TO_DATE(''' || p_ToShipDate || ''',''MM/dd/yyyy'') '; END IF; ELSE ------------------------------------------------------------------------------------------- -- Incomplete and All statuses are filtered on the currdate ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- Set From Date Clause ------------------------------------------------------------------------------------------- IF(p_FromShipDate IS NOT NULL) THEN whereClauseFromDate := ' AND TRUNC(te.currdate) >= TO_DATE(''' || p_FromShipDate || ''',''MM/dd/yyyy'') '; END IF; ------------------------------------------------------------------------------------------- -- Set To Date Clause ------------------------------------------------------------------------------------------- IF (p_ToShipDate IS NOT NULL) THEN whereClauseToDate := ' AND TRUNC(te.currdate) <= TO_DATE(''' || p_ToShipDate || ''',''MM/dd/yyyy'') '; END IF; END IF; IF (p_TaskStatus = 'I') THEN whereClauseStatus := ' AND act_end_date IS NULL '; ELSIF (p_TaskStatus = 'C') THEN whereClauseStatus := ' AND act_end_date IS NOT NULL '; ELSE whereClauseStatus := ''; END IF;
Any help would be greatly appreciated.
Thank you
Andy
Published by: BluShadow on August 2, 2011 15:11
addition of {noformat}{noformat} tags for clarity. Please read {message:id=9360002} and learn to do this yourself.
I'll take a wild shot in the dark, and suggests that it is perhaps what you are looking for...
WHERE a.ebiz_asn_no(+) = te.ebiz_cntrl_no AND w.ebiz_work_no(+) = te.ebiz_cntrl_no AND o.ebiz_ord_no(+) = ebiz_cntrl_no AND t.ebiz_trailer_no(+) = te.ebiz_trailer_no AND ms.ebiz_sku_no(+) = te.ebiz_sku_no AND NVL(ms.ebiz_sku_no, -1) = NVL(p_SKU, nvl(ms.ebiz_sku_no, -1)) AND tl.ebiz_lp_no(+) = te.ebiz_lp_no AND NVL(te.ebiz_lp_no, -1) = NVL(p_LP, nvl(te.ebiz_lp_no, -1)) AND eu.ebiz_user_no(+) = te.act_ebiz_user_no AND NVL(te.act_ebiz_user_no, -1) = NVL(p_UserID, NVL(te.act_ebiz_user_no, -1)) AND NVL(te.begin_location, '~') = NVL(p_BeginLocation, NVL(te.begin_location, '~')) AND NVL(te.end_location, '~') = NVL(p_EndLocation, NVL(te.end_location, '~')) AND te.comp_id = p_CompID AND te.site_id = p_SiteID AND INSTR('' || p_TaskType || '', te.task_type) > 0 AND NVL(task_priority, -1) = NVL(p_Priority, NVL(task_priority, -1)) AND NVL(te.ebiz_cntrl_no, -1) = DECODE(te.task_type, 'IULD', DECODE(p_Order, null, te.ebiz_cntrl_no, ebiz_po2asn.get_ebiz_po_no(p_Order)), NVL(p_Order, NVL (te.ebiz_cntrl_no,-1))) AND NVL(te.batch_no,'~') = NVL(p_Batch, NVL(te.batch_no, '~')) AND NVL(te.ebiz_wave_no, -1) = NVL(p_Wave, NVL(te.ebiz_wave_no, -1)) AND TRUNC(te.act_end_date) >= NVL(TO_DATE(p_FromShipDate,'MM/dd/yyyy'),TRUNC(te.act_end_date)) AND TRUNC(te.act_end_date) <= NVL(TO_DATE(p_ToShipDate,'MM/dd/yyyy'),TRUNC(tw.act_end_date)) AND TRUNC(te.currdate) >= NVL(TO_DATE(p_FromShipDate,'MM/dd/yyyy'),TRUNC(te.currdate)) AND TRUNC(te.currdate) <= NVL(TO_DATE(p_ToShipDate,'MM/dd/yyyy'),TRUNC(te.currdate)) AND ( (act_end_date IS NULL AND p_TaskStatus = 'I') OR (act_end_date IS NOT NULL AND p_TaskStatus = 'C') OR p_TaskStatus NOT IN ('I','C') )
Published by: BluShadow on August 2, 2011 16:27
spleen the last clause. Oops. -
Tuning - using the CASE statement in the WHERE clause of the query
Hi all
My request has been changed to use a CASE statement in the WHERE clause to examine the data to some columns based on a parameter value. This modified request is made a full table and constantly running scan. Please suggest what can be done to improve its performance:
Query:
Description of the table:SELECT LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))) AS summary_date, os.acctnum, os.avieworigin_refid, COUNT(1) cnt_articleview, SUM(NVL(autocompletedterm,0)) cnt_autocompletedterm FROM TABLE1 os WHERE os.acctnum IS NOT NULL AND os.avieworigin_refid IS NOT NULL AND os.requestdatetime IS NOT NULL AND UPPER(os.success_ind) = 'S' AND CASE WHEN Param_ValueToCheck = 'FULL' AND get_date_timestamp(os.requestdatetime) BETWEEN TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') AND TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') THEN 1 WHEN Param_ValueToCheck = 'INCR' AND os.entry_createddate BETWEEN TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') AND TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') THEN 1 END = 1 AND CASE WHEN Param_ValueToCheck = 'FULL' AND os.entry_CreatedDate BETWEEN TO_DATE('01-APR-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') AND TO_DATE('07-JUN-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') THEN 1 WHEN Param_ValueToCheck = 'INCR' THEN 1 END = 1 GROUP BY LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))), os.acctnum,os.avieworigin_refid;
(Number of lines: approx. > amount 600 000 000)
Explain PlanName Null Type ------------------------------ -------- ------------ ARTICLEID NOT NULL NUMBER(20) USERKEY NUMBER(10) AVIEWORIGIN_REFID VARCHAR2(10) SUCCESS_IND VARCHAR2(2) ENTRY_CREATEDDATE DATE CREATED_BY VARCHAR2(10) FILENUMBER NUMBER(10) LINENUMBER NUMBER(10) ACCTNUM VARCHAR2(10) AUTOCOMPLETEDTERM NUMBER(2) REQUESTDATETIME VARCHAR2(19)
Published by: Chaitanya on June 9, 2011 02:44SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Plan hash value: 2224314832 ---------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | ---------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 590 | 33040 | 2501K (1)| 08:20:15 | | | | 1 | HASH GROUP BY | | 590 | 33040 | 2501K (1)| 08:20:15 | | | | 2 | PARTITION RANGE ALL| | 590 | 33040 | 2501K (1)| 08:20:15 | 1 |1048575| |* 3 | TABLE ACCESS FULL | TABLE1 | 590 | 33040 | 2501K (1)| 08:20:15 | 1 |1048575| ---------------------------------------------------------------------------------------------------------- PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Predicate Information (identified by operation id): --------------------------------------------------- 3 - filter(UPPER("OS"."SUCCESS_IND")='S' AND CASE WHEN ('FULL'='FULL' AND "OS"."ENTRY_CREATEDDATE">=TO_DATE(' 2011-04-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "OS"."ENTRY_CREATEDDATE"<=TO_DATE(' 2011-06-07 00:00:00', 'syyyy-mm-dd hh24:mi:ss')) THEN 1 WHEN 'FULL'='INCR' THEN 1 END =1 AND "OS"."REQUESTDATETIME" IS NOT NULL AND CASE WHEN ('FULL'='FULL' AND "ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")>=TO_DATE(' 2011-05-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")<=TO_DATE(' 2011-05-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss')) THEN 1 WHEN ('FULL'='INCR' AND "OS"."ENTRY_CREATEDDATE">=TO_DATE(' 2011-05-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "OS"."ENTRY_CREATEDDATE"<=TO_DATE(' PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 2011-05-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss')) THEN 1 END =1 AND "OS"."ACCTNUM" IS NOT NULL AND "OS"."AVIEWORIGIN_REFID" IS NOT NULL)
Published by: Chaitanya on June 9, 2011 02:47When it is executed individually, MERGE LOGIC 1 and LOGIC of MERGE 2 take about ten for a daterange of 30 days data.
BUT FULL is to get the scores of APR - JUN, INCR becomes partitions for MAY so not both 30 days.
Are compare us like with like? -
Why I always get direction is not available when you use maps for the iPhone 6 more?
Currently I live in the Qatar.
Hi Alison, Sameh
The reason why you see directions is not available, it's that for cards of Apple, turn-by-turn directions is not a feature that is available in the Qatar. You can search for places and satellite imagery
Take a look at the link below for more details on what features are available in the Qatar.iOS 9 feature availability
http://www.Apple.com/iOS/feature-availability/Nice day
-
Well not much description required in this case. I was using firefox for the first time on a mac and so was trying new things with this version of firefox. Just got stuck with these separators xtra... Can't find a way to get them off of my bookmarks toolbar...
You can open the Bookmark Manager (Bookmarks > show all bookmarks) and go to the Favorites bar folder in the left pane.
You can then remove the separators in the right pane. -
Can I use java for the development of the playbook?
Hi I'm new in blackberry development. I've owned playbook and that you want to develop playbook apps, but I can only develop in java. Please, someone tell me what I can use java for the development of the Tablet?
Bilal
# You can convert by android android applications, run-time.
Explore these links
-
I installed driver ux 16 in my widows 7 and connected to my pc but nothing displays, no .so tracks what is wrong with it please suggest.or how can I do this by using midi for the first time.
In the subject line, type a brief description of your problem or your question. A subject line that says only "Hi alll" not will receive the attention of someone who can be familiar with your particular situation.
Contact the support of Yamaha.
-
Trouble using a function in the where clause
Hello
I use a function that is located at ask.tom.oracle.com, which converts a long data type in a character. The function returns an error when it is placed in the where clause. The sql statement, the error message and the function of asking tom are listed below. Does anyone know how to fix this?
< pre >
SELECT A.FLDPHYSICAL,
A.FLDEXPOSURE,
A.FLDDATEDUE,
A.FLDDATELAST,
A.FLDEMPLOYEE,
B.FLDBDATE,
B.FLDMAILSTOP,
B.FLDREC_NUM,
B.FLDLNAME,
B.FLDMI,
B.FLDFNAME,
B.FLDBDATE,
B.FLDDEPT,
B.FLDSTATUS,
B.FLDSSN,
B.FLDHOMEPHON,
B.FLDWORKPHON,
B.FLDID,
B.FLDDIVISION
OF REQEXAM,.
B OF THE EMPLOYEE,
C EMPLOYEE_MEMO
WHERE A.FLDEMPLOYEE = B.FLDREC_NUM
AND b.flduserstr = c.fldrec_num
AND OHM_PKG. GET_LONG ('EMPLOYEE_MEMO', 'FLDDATA', C.ROWID) AS ' % CDL YES % '.
"AND A.FLDDATEDUE > 1 January 1900"
AND A.FLDPHYSICAL = 'COP '.
ORDER OF B.FLDDIVISION,
B.FLDLNAME,
B.FLDFNAME,
B.FLDMI,
A.FLDDATEDUE
-------------------------------------------------------------------------
The error message
Error in the command line: 26 column: 4
Error report:
SQL error: ORA-00904: "OHM_PKG." "" GET_LONG ": invalid identifier
00904, 00000 - '% s: invalid identifier '.
-------------------------------------------------------
create or replace
PACKAGE OHM_PKG AS
/ * TODO type (types, exceptions, methods etc.) package declarations here * /.
getlong function (p_tname in varchar2, p_cname in varchar2, p_rowid in rowid) return varchar2;
END OHM_PKG;
create or replace
PACKAGE BODY OHM_PKG AS
getlong function (p_tname in varchar2, p_cname in varchar2, p_rowid in rowid) return varchar2 as
whole l_cursor default dbms_sql.open_cursor;
number of l_n;
l_long_val varchar2 (4000);
number of l_long_len;
number of l_buflen: = 4000;
l_curpos number: = 0;
Start
DBMS_SQL. Parse (l_cursor,
"select" | p_cname | 'from ' | p_tname |
' where rowid =: x',.
DBMS_SQL.native);
DBMS_SQL.bind_variable (l_cursor, ': x', p_rowid);
DBMS_SQL.define_column_long (l_cursor, 1);
l_n: = dbms_sql.execute (l_cursor);
If (dbms_sql.fetch_rows (l_cursor) > 0)
then
DBMS_SQL.column_value_long (l_cursor, 1, l_buflen, l_curpos,)
(l_long_val, l_long_len);
end if;
DBMS_SQL.close_cursor (l_cursor);
Return l_long_val;
getLong end;
END OHM_PKG;
< / prev >Remove the '_' in the name of the function as below:
AND OHM_PKG. GETLONG('EMPLOYEE_MEMO', 'FLDDATA', C.ROWID) AS "CDL % YES % '.
-
Execution of statement of UPDATE for the whole table even when the WHERE Clause is presentation
Hi friends,
I have a problem in a stored procedure where I wrote an update with a where clause clause statement. At some point only one line should be updated according to the unique identifier in where clause.
But what is happening is that the Update statement is getting executed for all rows in the table to neglect the WHERE clause. I don't get any idea of why this is happening. Here is the stored procedure and the update statement is BOLD:-
CREATE OR REPLACE PROCEDURE MDMADM.proc_MDM_InsertCntryDetails
(
CntryMasterCode IN VARCHAR2,
CntryName IN VARCHAR2,
MDMUser IN VARCHAR2,
Exists IN ITS ENTIRETY,
status in VARCHAR2,
Inserted_By IN VARCHAR2 default NULL,
Modified_By IN VARCHAR2 default NULL,
Mdm_Code IN the DEFAULT NUMBER 0.
Action in VARCHAR2 DEFAULT 'Add ',.
XGenAttNames IN VARCHAR2 default NULL,
XGenAttValues IN VARCHAR2 default NULL,
MirusAttNames IN VARCHAR2 default NULL,
MirusAttValues IN VARCHAR2 default NULL,
GenisysAttNames IN VARCHAR2 default NULL,
GenisysAttValues IN VARCHAR2 default NULL,
XGenModify IN VARCHAR2 default NULL,
MirusModify IN VARCHAR2 default NULL,
GenisysModify IN VARCHAR2 default NULL
)
IS
strSQLXGen VARCHAR (1000);
strSQLMirus VARCHAR (1000);
strSQLGenisys VARCHAR (1000);
nMaxMDMCode INTEGER.
ifExist INTEGER;
/******************************************************************************
NAME: proc_MDM_InsertCntryDetails
PURPOSE:
REVISIONS:
Worm Date Description of the author
--------- ---------- --------------- ------------------------------------
1.0 03/07/2009 1. Created this procedure.
NOTES:
Keywords to replace automatically available Auto:
Object name: proc_MDM_InsertCntryDetails
SYSDATE: 03/07/2009
Date and time: 03/07/2009, 19:11:20 and 03/07/2009-19:11:20
User name: (put in TOAD Options, editor of the procedure)
Name of the table: (defined in the dialog box "New PL/SQL object")
******************************************************************************/
BEGIN
COUNT (*) of SELECT INTO ifExist OF MDM_COUNTRY_MASTER;
IfExist IF = 0 THEN
SELECT 1 INTO nMaxMDMCode FROM DUAL;
ON THE OTHER
SELECT MAX (MDM_CODE) + 1 IN MDM_COUNTRY_MASTER nMaxMDMCode;
END IF;
IF Action = "add" THEN
INSERT INTO MDM_COUNTRY_MASTER(MDM_CODE,MDM_MASTER_CODE,MDM_DESCRIPTION,MDM_USER,MDM_EXIST,MDM_STATUS,MDM_ACTION,DAT_INSERT_DATE,DAT_INSERTED_BY)
VALUES(nMaxMDMCode,CntryMasterCode,CntryName,MDMUser,exist,Status,action,sysdate,Inserted_By);
strSQLXGen: = ' INSERT IN MDM_COUNTRY_MAPPING (MDM_CODE, SYSTEM_NAME, SYSTEM_CODE,' |) XGenAttNames | DAT_INSERTED_BY, DAT_INSERT_DATE) ' |
"VALUES (' |)" nMaxMDMCode | ',' || '''' || "XGen | '''' || ',1,' || XGenAttValues | ',' || '''' || Inserted_By | '''' || SYSDATE)';
EXECUTE IMMEDIATE strSQLXGen;
strSQLMirus: = ' INSERT IN MDM_COUNTRY_MAPPING (MDM_CODE, SYSTEM_NAME, SYSTEM_CODE,' |) MirusAttNames | DAT_INSERTED_BY, DAT_INSERT_DATE) ' |
"VALUES (' |)" nMaxMDMCode | ',' || '''' || "Mirus | '''' || ',2,' || MirusAttValues | ',' || '''' || Inserted_By | '''' || SYSDATE)';
EXECUTE IMMEDIATE strSQLMirus;
strSQLGenisys: = ' INSERT IN MDM_COUNTRY_MAPPING (MDM_CODE, SYSTEM_NAME, SYSTEM_CODE,' |) GenisysAttNames | DAT_INSERTED_BY, DAT_INSERT_DATE) ' |
"VALUES (' |)" nMaxMDMCode | ',' || '''' || "Genisys | '''' || ',3,' || GenisysAttValues | ',' || '''' || Inserted_By | '''' || SYSDATE)';
EXECUTE IMMEDIATE strSQLGenisys;
ON THE OTHER
UPDATE MDM_COUNTRY_MASTER
SET MDM_DESCRIPTION = CntryName, DAT_MODIFIED_BY = Modified_By, DAT_MODIFY_DATE = SYSDATE.
MDM_USER = MDMUser, MDM_ACTION = Action, MDM_STATUS = status MDM_EXIST = exist WHERE MDM_CODE = Mdm_Code;
COUNT (*) of SELECT INTO ifExist FROM MDM_COUNTRY_MAPPING WHERE SYSTEM_CODE = 1 AND MDM_CODE = Mdm_Code;
IfExist IF = 0 THEN
strSQLXGen: = ' INSERT IN MDM_COUNTRY_MAPPING (MDM_CODE, SYSTEM_NAME, SYSTEM_CODE,' |) XGenAttNames | DAT_INSERTED_BY, DAT_INSERT_DATE) ' |
' VALUES(' ||) Mdm_Code | ',' || '''' || "XGen | '''' || ',1,' || XGenAttValues | ',' || '''' || Modified_By | '''' || SYSDATE)';
EXECUTE IMMEDIATE strSQLXGen;
ON THE OTHER
strSQLXGen: = "UPDATE MDM_COUNTRY_MAPPING SET | XGenModify | ', DAT_MODIFY_DATE = SYSDATE, DAT_MODIFIED_BY =' | '''' || Modified_By | '''' || "WHERE MDM_CODE =' | ' Mdm_Code | "and SYSTEM_CODE = 1';
EXECUTE IMMEDIATE strSQLXGen;
END IF;
COUNT (*) of SELECT INTO ifExist FROM MDM_COUNTRY_MAPPING WHERE SYSTEM_CODE = 2 AND MDM_CODE = Mdm_Code;
IfExist IF = 0 THEN
strSQLMirus: = ' INSERT IN MDM_COUNTRY_MAPPING (MDM_CODE, SYSTEM_NAME, SYSTEM_CODE,' |) MirusAttNames | DAT_INSERTED_BY, DAT_INSERT_DATE) ' |
' VALUES(' ||) Mdm_Code | ',' || '''' || "Mirus | '''' || ',2,' || MirusAttValues | ',' || '''' || Modified_By | '''' || SYSDATE)';
EXECUTE IMMEDIATE strSQLMirus;
ON THE OTHER
strSQLMirus: = "UPDATE MDM_COUNTRY_MAPPING SET | MirusModify | ', DAT_MODIFY_DATE = SYSDATE, DAT_MODIFIED_BY =' | '''' || Modified_By | '''' || "WHERE MDM_CODE =' | ' Mdm_Code | "and SYSTEM_CODE = 2';
EXECUTE IMMEDIATE strSQLMirus;
END IF;
COUNT (*) of SELECT INTO ifExist FROM MDM_COUNTRY_MAPPING WHERE SYSTEM_CODE = 3 AND MDM_CODE = Mdm_Code;
IfExist IF = 0 THEN
strSQLGenisys: = ' INSERT IN MDM_COUNTRY_MAPPING (MDM_CODE, SYSTEM_NAME, SYSTEM_CODE,' |) GenisysAttNames | DAT_INSERTED_BY, DAT_INSERT_DATE) ' |
' VALUES(' ||) Mdm_Code | ',' || '''' || "Genisys | '''' || ',3,' || GenisysAttValues | ',' || '''' || Modified_By | '''' || SYSDATE)';
EXECUTE IMMEDIATE strSQLGenisys;
ON THE OTHER
strSQLGenisys: = "UPDATE MDM_COUNTRY_MAPPING SET | GenisysModify | ', DAT_MODIFY_DATE = SYSDATE, DAT_MODIFIED_BY =' | '''' || Modified_By | '''' || "WHERE MDM_CODE =' | ' Mdm_Code | "and SYSTEM_CODE = 3';
EXECUTE IMMEDIATE strSQLGenisys;
END IF;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHILE OTHERS THEN
-Consider recording the error and then re-raise
LIFT;
END proc_MDM_InsertCntryDetails;
/
Thank you>
WHERE mdm_code = mdm_code
>This will always be value true - similar to WHERE 1 = 1.
You typed it wrong or is the same as the variable column name? If they are the same test rename one of them.
-
In the WHERE clause string variable
I have the procedure
CREATE OR REPLACE PROCEDURE proc1 (p_1 IN varchar2)
IS
BEGIN
DELETE FROM TABLE1
WHERE
Col1 = '@p_1. '
;
Dbms_output.put_line (number of rows sql %);
COMMIT;
EXCEPTION
WHILE OTHERS THEN
ROLLBACK;
RAISE_APPLICATION_ERROR (-20000, SQLERRM);
Proc1 END;
/
You will need to pass a string input parameter to the procedure. This string is applied to the WHERE clause. The foregoing does not work correctly the value of @p1 is in the WHERE clause. The value passed to the stored procedure does not run.
Please let me know the solution. I have to use BIND variables only.
Thank youuser12038051 wrote:
Thank you all. Yes, the underside of the works.DELETE FROM TABLE1
WHERE
Col1 = p_1
;PS: Both COL1 and p_1 are string values. Would like to know how it works with out the quotes because it is a string.
In addition I would like to follow the number of lines executed in each statement. Preference will have to use sql % rowcount. Are there other alternatives. Please let me know. Thanks in advance.
Oracle 'knows' that the variable p_1 is a varchar2 data type and that col1 is a varchar2 data type, so he makes a comparison between them strinf. This is how variables work in any programming language that I am aware. The only time that you must provide a value is when you use a literal value (for example in an assignment variable, or as a parameter of a procedure).
If you need to know the number of deleted rows, then sql % rowcount is the only sensible option. Just be aware that you need to get the value before committing yourself ot other options of SQL.
John
-
by the way check box values in the WHERE clause
Hello
I created a data block - 'CONTACT' (block of data in database)
and has an element of database - 'Code', 'Descr '.
The number of records displayed has the value 5.
When enabled - value 'Y '.
Value when disabled - n
Box mapping of other values - "unchecked."
I write the code inside "WHEN the BUTTON PRESS. My main goal is to return the number of records from
According to several conditions and one among them is the CODE which can be single or multiple based on the checked checkbox.
The requirement is when I check one or more boxes, I should pass the "Code" element values in the WHERE clause.
I tried to use the simple loop but things havmt worked as shown below.
The next_record refers to the COCHEE BOX as well, and thus return all the eventhough lines if it is not checked.
----------------------------------------------------------------------------
-LOOP
IF: contact.cb = 'Y' THEN
LOOP
IF p_where is null then
p_where: =: contact.code;
on the other
p_where: = p_where | «, » || : contact.code;
end if;
When the output: system.last_record = "TRUE";
next_record;
END LOOP;
end if;
-END LOOP;
MESSAGE ("p_where :'|| p_where);
MESSAGE (' ');
END;
------------------------------------
And even if I write the LOOP before the first CASE, it returns me the current value and move to the last record.
Please suggest
Try something like this:
FIRST_RECORD; LOOP IF :contact.cb = 'Y' THEN IF p_where is null then p_where := :contact.code; else p_where := p_where ||','||:contact.code; end if; END IF; exit when :system.last_record = 'TRUE'; next_record; END LOOP; -- END LOOP; MESSAGE ( 'p_where :'||p_where); MESSAGE (' '); END;
-
Beginner: Get on the WHERE clause syntax error in SELECT
I am very new to php and mySQL. Use DW master/detail to generate Basic code I need. One thing I have to do is to modify a select statement in the master to include a WHERE clause to limit the selection to a particular value in a field.
I get a syntax error with the select statement in the WHERE clause, I add to the map.
It's the part of the error message showing the location of the error:
"WHERE group = 'Community' LIMIT 0, 10'"
Php that generated the select is:
$query_maps = "SELECT * FROM tblmaps ORDER BY tblmaps.» DispSeq ';
$query_limit_maps = sprintf ("%s WHERE group =' LIMIT %s %d, %d", $query_maps, $selectGroup, $startRow_maps, $maxRows_maps);
This approach to create the select statement is on the generated code for the master page. He added the LIMIT clause. I didn't add the ' WHERE group = '%s' and the variable $selectGroup, which comes from the old code.» You can see that the $selectGroup variable is equal to the "community: group.»
I scanned the web to see what syntax error, I could do, but haven't found anything that explains it.
The resolved full select statement is:
SELECT * FROM tblmaps ORDER BY tblmaps. WHERE DispSeq = 'Community' LIMIT 0,10 group
What I don't see?
Tom
The group is a reserved word in MySQL. You could probably put single quotes around it, but I suggest to rename this column. Do not use reserved words for column names.
Maybe you are looking for
-
HP Officejet Pro 8620: Auto prints Fax newspapers - when no Fax has been sent
Several times now, my printer prints sheet Fax connects during the night. I have not hooked to a phone line, or use the fax machine. It prints 40 to 50 pages of newspapers only fax sheet at a time using usually upward all the paper in the tray. It
-
I recently had to reinstall Windows XP. I used the original supplied with my computer disks. When you try to download a program previously used I got the following error message: "could not find a version of the runtiime to run this application. Ho
-
"I tried to load a Turbo Tax 2011 program and and the error message came up to the top -" D; "-is not a valid win32 application". In D, I got the TurboTax 2011 loading program. Can you help me fix this problem? E-mail address is removed from the pri
-
system restart when connecting to the remote desktop
Hi team, I have a system and we mainly by using Remote Desktop connection... We are facing a question like: -.Suppose that a person take system through MSTSC, and after some time, if someone else will try to take remote desktop that PC even on this w
-
How can I delete an individual entry in the address bar history?