Results of a query greater than 32kb
I am trying to generate an XML based on the results of a query. Is there any builtin/advanced ORACLE API that checks to see if the query's result/output is greater than 32kb or not? Please ignore my earlier question from yesterday.
@rp0428: Are you suggesting that I use the variable vStrSqlQuery that I had declared as VARCHAR2(32767) as a CLOB and then find out the length using the built in API?
I'm saying that:
1. Oracle does NOT know how many bytes generated XML will take until you generate it.
2. You need to store the generated XML in a table column or variable that is large enough to contain it. A VARCHAR2 can NOT hold more than 32k but a CLOB can
3. the DBMS_LOB package has functionality for getting the length of a CLOB
4. You can try to generate the XML into a VARCHAR2 and then trap any 'too long' exception but then you will NOT have any data
5. You can generate the XML into a CLOB and then see how long it is and then do whatever you like with the entire value.
Similar Messages
-
Variables in query, greater than
Please tell me if the following is possible.
I have a query with a variable that asks for a date to be entered, e.g. 02.2006 and spits out the results.
However I have been asked to set this variable in such a way that it should display the results of 02.2006 or whatever I have
entered and all of the months greater than 02.2006 or whatever. ( not less than only 02.2006 and greater than )
Is it possible. I do not think so but I thought I verify from the SDN gurus. Please help if you can. Thanks.So basically, you want to know the different value of calmonth in row with key figures being in column.
I thought you want the report strucutre in ROW like:
User Entered calmonth
User Entered Calmonth - 12.9999
But your report requirement is
User Entered Calmonth
User Entered Calmonth + 1
User Entered Calmonth + 2
12.9999
If this is the requirement,
Create a customer exit variable, ready for input with interval.
Let user enter a date say 05.2006
Now in the customer exit,
Set LOW as user entered low value 05.2006
Set HIGH as '999912'.
That would restrict your calmonth by user entered - 12.9999 and in the row you will see one row per one calmonth value and once your row is restricted by month, you will see KF restricted by that month automatically.
- Danny
Edited by: Danny Matt on Jul 7, 2009 11:02 AM -
How to come up with a magic number for any table that returns more than 32KB?
I am in a unique situation where in I am trying to retrieve values from multiple tables and publish them as XML output. The problem is based on the condition a few tables could retrieve data more than 32KB and a few less than 32KB. Less than 32KB is not an issue as XML generation is smooth. The minute it reaches greater than 32KB it generates a run time error. Just wondering if there is any way to ensure that the minute the query's results is greater than 32 kb, it should break say - if the results is 35KB, then I should break that result into 32 KB and 3kb; once done then pass this data to be published as an XML output. This is again not just for one table, but all the tables that are called in the function.
Is there any way?? I am unable to get any ideas nor have I done anything so complex from production support stand point. Would appreciate if someone can guide me on this.
The way it is, is as follows:
I have a table called ctn_pub_cntl
CREATE TABLE CTNAPP.ctn_pub_cntl
(ctn_pub_cntl_id NUMBER(18)
,table_name VARCHAR2(50)
,last_pub_tms DATE
,queue_name VARCHAR2(50)
,dest_system VARCHAR2(50)
,frequency NUMBER(6)
,status VARCHAR2(8)
,record_create_tms DATE
,create_user_id VARCHAR2(8)
,record_update_tms DATE
,update_user_id VARCHAR2(8)
,CONSTRAINT ctn_pub_cntl_id_pk PRIMARY KEY(ctn_pub_cntl_id)
Data for this is:
INSERT INTO CTNAPP.ctn_pub_cntl
(ctn_pub_cntl_id
,table_name
,last_pub_tms
,queue_name
,dest_system
,frequency
VALUES
(CTNAPP_SQNC.nextval
,'TRKFCG_SBDVSN'
,TO_DATE('10/2/2004 10:17:44PM','MM/DD/YYYY HH12:MI:SSPM')
,'UT.TSD.TSZ601.UNP'
,'SAP'
,15
INSERT INTO CTNAPP.ctn_pub_cntl
(ctn_pub_cntl_id
,table_name
,last_pub_tms
,queue_name
,dest_system
,frequency
VALUES
(CTNAPP_SQNC.nextval
,'TRKFCG_TRACK_SGMNT_DN'
,TO_DATE('02/06/2015 9:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
,'UT.TSD.WRKORD.UNP'
,'SAP'
,30
INSERT INTO CTNAPP.ctn_pub_cntl
(ctn_pub_cntl_id
,table_name
,last_pub_tms
,queue_name
,dest_system
,frequency
VALUES
(CTNAPP_SQNC.nextval
,'TRKFCG_FXPLA_TRACK_LCTN_DN'
,TO_DATE('10/2/2004 10:17:44PM','MM/DD/YYYY HH12:MI:SSPM')
,'UT.TSD.YRDPLN.INPUT'
,'SAP'
,30
INSERT INTO CTNAPP.ctn_pub_cntl
(ctn_pub_cntl_id
,table_name
,last_pub_tms
,queue_name
,dest_system
,frequency
VALUES
(CTNAPP_SQNC.nextval
,'TRKFCG_FXPLA_TRACK_LCTN2_DN'
,TO_DATE('02/06/2015 9:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
,'UT.TSD.TSZ601.UNP'
,'SAP'
,120
INSERT INTO CTNAPP.ctn_pub_cntl
(ctn_pub_cntl_id
,table_name
,last_pub_tms
,queue_name
,dest_system
,frequency
VALUES
(CTNAPP_SQNC.nextval
,'TRKFCG_FXPLA_TRACK_LCTN2_DN'
,TO_DATE('04/23/2015 11:50:00PM','MM/DD/YYYY HH12:MI:SSPM')
,'UT.TSD.YRDPLN.INPUT'
,'SAP'
,10
INSERT INTO CTNAPP.ctn_pub_cntl
(ctn_pub_cntl_id
,table_name
,last_pub_tms
,queue_name
,dest_system
,frequency
VALUES
(CTNAPP_SQNC.nextval
,'TRKFCG_FIXED_PLANT_ASSET'
,TO_DATE('04/23/2015 11:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
,'UT.TSD.WRKORD.UNP'
,'SAP'
,10
INSERT INTO CTNAPP.ctn_pub_cntl
(ctn_pub_cntl_id
,table_name
,last_pub_tms
,queue_name
,dest_system
,frequency
VALUES
(CTNAPP_SQNC.nextval
,'TRKFCG_OPRLMT'
,TO_DATE('03/26/2015 7:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
,'UT.TSD.WRKORD.UNP'
,'SAP'
,30
INSERT INTO CTNAPP.ctn_pub_cntl
(ctn_pub_cntl_id
,table_name
,last_pub_tms
,queue_name
,dest_system
,frequency
VALUES
(CTNAPP_SQNC.nextval
,'TRKFCG_OPRLMT_SGMNT_DN'
,TO_DATE('03/28/2015 12:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
,'UT.TSD.WRKORD.UNP'
,'SAP'
,30
COMMIT;
Once the above data is inserted and committed, then I created a function in a package:
CREATE OR REPLACE PACKAGE CTNAPP.CTN_PUB_CNTL_EXTRACT_PUBLISH
IS
TYPE tNameTyp IS TABLE OF ctn_pub_cntl.table_name%TYPE INDEX BY BINARY_INTEGER;
g_tName tNameTyp;
TYPE tClobTyp IS TABLE OF CLOB INDEX BY BINARY_INTEGER;
g_tClob tClobTyp;
FUNCTION GetCtnData(p_nInCtnPubCntlID IN CTN_PUB_CNTL.ctn_pub_cntl_id%TYPE,p_count OUT NUMBER ) RETURN tClobTyp;
END CTNAPP.CTN_PUB_CNTL_EXTRACT_PUBLISH;
--Package body
CREATE OR REPLACE PACKAGE BODY CTNAPP.CTN_PUB_CNTL_EXTRACT_PUBLISH
IS
doc xmldom.DOMDocument;
main_node xmldom.DOMNode;
root_node xmldom.DOMNode;
root_elmt xmldom.DOMElement;
child_node xmldom.DOMNode;
child_elmt xmldom.DOMElement;
leaf_node xmldom.DOMNode;
elmt_value xmldom.DOMText;
tbl_node xmldom.DOMNode;
table_data XMLDOM.DOMDOCUMENTFRAGMENT;
l_ctx DBMS_XMLGEN.CTXHANDLE;
vStrSqlQuery VARCHAR2(32767);
l_clob tClobTyp;
l_xmltype XMLTYPE;
--Local Procedure to build XML header
PROCEDURE BuildCPRHeader IS
BEGIN
child_elmt := xmldom.createElement(doc, 'PUBLISH_HEADER');
child_node := xmldom.appendChild (root_node, xmldom.makeNode (child_elmt));
child_elmt := xmldom.createElement (doc, 'SOURCE_APLCTN_ID');
elmt_value := xmldom.createTextNode (doc, 'CTN');
leaf_node := xmldom.appendChild (child_node, xmldom.makeNode (child_elmt));
leaf_node := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value));
child_elmt := xmldom.createElement (doc, 'SOURCE_PRGRM_ID');
elmt_value := xmldom.createTextNode (doc, 'VALUE');
leaf_node := xmldom.appendChild (child_node, xmldom.makeNode (child_elmt));
leaf_node := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value));
child_elmt := xmldom.createElement (doc, 'SOURCE_CMPNT_ID');
elmt_value := xmldom.createTextNode (doc, 'VALUE');
leaf_node := xmldom.appendChild (child_node, xmldom.makeNode (child_elmt));
leaf_node := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value));
child_elmt := xmldom.createElement (doc, 'PUBLISH_TMS');
elmt_value := xmldom.createTextNode (doc, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
leaf_node := xmldom.appendChild (child_node, xmldom.makeNode (child_elmt));
leaf_node := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value));
END BuildCPRHeader;
--Get table data based on table name
FUNCTION GetCtnData(p_nInCtnPubCntlID IN CTN_PUB_CNTL.ctn_pub_cntl_id%TYPE,p_Count OUT NUMBER) RETURN tClobTyp IS
vTblName ctn_pub_cntl.table_name%TYPE;
vLastPubTms ctn_pub_cntl.last_pub_tms%TYPE;
BEGIN
g_vProcedureName:='GetCtnData';
g_vTableName:='CTN_PUB_CNTL';
SELECT table_name,last_pub_tms
INTO vTblName, vLastPubTms
FROM CTN_PUB_CNTL
WHERE ctn_pub_cntl_id=p_nInCtnPubCntlID;
-- Start the XML Message generation
doc := xmldom.newDOMDocument;
main_node := xmldom.makeNode(doc);
root_elmt := xmldom.createElement(doc, 'PUBLISH');
root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt));
--Append Table Data as Publish Header
BuildCPRHeader;
--Append Table Data as Publish Body
child_elmt := xmldom.createElement(doc, 'PUBLISH_BODY');
leaf_node := xmldom.appendChild (root_node, xmldom.makeNode(child_elmt));
DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT','''YYYY:MM:DD HH24:MI:SS''');
vStrSqlQuery := 'SELECT * FROM ' || vTblName
|| ' WHERE record_update_tms <= TO_DATE(''' || TO_CHAR(vLastPubTms, 'MM/DD/YYYY HH24:MI:SS') || ''', ''MM/DD/YYYY HH24:MI:SS'') ' ;
-- || ' AND rownum < 16'
DBMS_OUTPUT.PUT_LINE(vStrSqlQuery);
l_ctx := DBMS_XMLGEN.NEWCONTEXT(vStrSqlQuery);
DBMS_XMLGEN.SETNULLHANDLING(l_ctx, 0);
DBMS_XMLGEN.SETROWSETTAG(l_ctx, vTblName);
-- Append Table Data as XML Fragment
l_clob(1):=DBMS_XMLGEN.GETXML(l_ctx);
elmt_value := xmldom.createTextNode (doc, l_clob(1));
leaf_node := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value));
xmldom.writeToBuffer (doc, l_clob(1));
l_clob(1):=REPLACE(l_clob(1),'<?xml version="1.0"?>', NULL);
l_clob(1):=REPLACE(l_clob(1),'<', '<');
l_clob(1):=REPLACE(l_clob(1),'>', '>');
RETURN l_clob;
DBMS_OUTPUT.put_line('Answer is' ||l_clob(1));
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('There is no data with' || SQLERRM);
g_vProcedureName:='GetCtnData';
g_vTableName:='CTN_PUB_CNTL';
g_vErrorMessage:=SQLERRM|| g_vErrorMessage;
g_nSqlCd:=SQLCODE;
ctn_log_error('ERROR',g_vErrorMessage,'SELECT',g_nSqlCd,p_nInCtnPubCntlID,g_vPackageName,g_vProcedureName,g_vTableName);
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR : ' || SQLERRM);
ctn_log_error('ERROR',g_vErrorMessage,'OTHERS',g_nSqlCd,p_nInCtnPubCntlID,g_vPackageName,g_vProcedureName,g_vTableName);
END GetCtnData;
PROCEDURE printClob (result IN OUT NOCOPY CLOB) IS
xmlstr VARCHAR2 (32767);
line VARCHAR2 (2000);
BEGIN
xmlstr := DBMS_LOB.SUBSTR (result, 32767);
LOOP
EXIT WHEN xmlstr IS NULL;
line := SUBSTR (xmlstr, 1, INSTR (xmlstr, CHR (10)) - 1);
DBMS_OUTPUT.put_line (line);
xmlstr := SUBSTR (xmlstr, INSTR (xmlstr, CHR (10)) + 1);
END LOOP;
END printClob;
END CTN_PUB_CNTL_EXTRACT_PUBLISH;
If you notice my query:
vStrSqlQuery := 'SELECT * FROM ' || vTblName
|| ' WHERE record_update_tms <= TO_DATE(''' || TO_CHAR(vLastPubTms, 'MM/DD/YYYY HH24:MI:SS') || ''', ''MM/DD/YYYY HH24:MI:SS'') ' ;
|| ' AND rownum < 16'
The minute I comment
|| ' AND rownum < 16' ;
, it throws an error because this query returns around 600 rows and all of those rows need to be published as XML and the tragedy is that there is a C program in between as well i.e. C will call my packged functions and then will do all the processing. Once this is done will pass the results back to C program. So obviously C does not recognise CLOB and somewhere in the process I have to convert the CLOB to VARCHAR or instead of CLOB I have to use VARCHAR array as a return type. This is my challenge.
Anyone that can help me to find out the required magic number and also a brief know how, I would appreciate that. Many thanks in advance.Not sure I understand which part is failing.
Is it the C program calling your packaged function? Or does the error occur in the PL/SQL code, in which case you should be able to pinpoint where it's wrong?
A few comments :
1) Using DOM to build XML out of relational data? What for? Use SQL/XML functions.
2) Giving sample data is usually great, but it's not useful here since we can't run your code. We're missing the base tables.
3) This is wrong :
vStrSqlQuery := 'SELECT * FROM ' || vTblName || ' WHERE record_update_tms <= TO_DATE(''' || TO_CHAR(vLastPubTms, 'MM/DD/YYYY HH24:MI:SS') || ''', ''MM/DD/YYYY HH24:MI:SS'') ' ;
A bind variable should be used here for the date.
4) This is wrong :
elmt_value := xmldom.createTextNode (doc, l_clob(1));
createTextNode does not support CLOB so it will fail as soon as the CLOB you're trying to pass exceeds 32k.
Maybe that's the problem you're referring to?
5) This is most wrong :
l_clob(1):=REPLACE(l_clob(1),'<?xml version="1.0"?>', NULL);
l_clob(1):=REPLACE(l_clob(1),'<', '<');
l_clob(1):=REPLACE(l_clob(1),'>', '>');
I understand what you're trying to do but it's not the correct way.
You're trying to convert a text() node representing XML in escaped form back to XML content.
The problem is that there are other things to take care of besides just '<' and '>'.
If you want to insert an XML node into an existing document, treat that as an XML node, not as a string.
Anyway,
Anyone that can help me to find out the required magic number
That would be a bad idea. Fix what needs to be fixed.
And please clearly state which part is failing : the C program or the PL/SQL code?
I'd vote for PL/SQL, as pointed out in [4]. -
Count statement for fields greater than 10 characters
Hi,
I am trying to write a query to select results from a database table where the results are only fields greater than 10 characters in length.
e.g.
Table
Employee----
Andrew
Jennifer Smith
Jamal
the query would only show the result Jennifer Smith because this field exceeds 10 characters in length.
Any help is appreciated....Have you tried coding anything yet for this homework assignment?
HINT: Use the LENGTH() function. -
Query to select values greater than, where AS clause is used
Oracle 10g
Requesting your help in writing the query correctly.
I have the following 2 tables. The AddProjectPhase and AddProject tables. It is many to many relationship. Each project can have a predefined set of 4 different phases under it. Each phase has a start date and an end date. I am writing a report to get the phases which have a duration greater than, for example, 3 months.
The query below is working fine to just display the list of all the phases along with the duration of each phase. I am not able to modify it to select the phases which have a duration, for example, 3 or more months.
CREATE TABLE "ADDPROJECT"
( "VERSIONNO" NUMBER(*,0),
"PROJID" VARCHAR2(20),
"PROJNAME" VARCHAR2(60),
"PROJSTARTDATE" DATE,
"PROJSTATUS" VARCHAR2(20),
"PROJENDDATE" DATE,
"PROJENDTYPE" VARCHAR2(20),
"PROJENDREASON" VARCHAR2(1000),
"UCPROJECTMANAGER" VARCHAR2(20),
"FROMDATE" DATE,
"TODATE" DATE,
"SRCHFIELD" VARCHAR2(20),
"OPERATOR" VARCHAR2(20),
"PARENTPROJID" VARCHAR2(20),
"PROJHIDDENDATE" VARCHAR2(20),
CONSTRAINT "PK_B36" PRIMARY KEY ("PROJID", "PROJHIDDENDATE") ENABLE
CREATE TABLE "ADDPROJECTPHASE"
( "VERSIONNO" NUMBER(*,0),
"PROJPHASEID" NUMBER(9,0),
"PHASESTARTDATE" DATE,
"PHASEENDDATE" DATE,
"RRDATE" DATE,
"PHASENAME" VARCHAR2(30),
"PROJPHASESTATUS" VARCHAR2(20),
"PROJID" VARCHAR2(20),
"OPERATOR" VARCHAR2(20),
"FROMDATE" DATE,
"TODATE" DATE,
"SRCHFIELD" VARCHAR2(20),
"REVIEWCOMMENTS" VARCHAR2(1000),
"PROJHIDDENDATE" VARCHAR2(20),
"ISUEVALUATION" NUMBER(1,0),
"SOLUTIONINGTEAMINVOLVEMENT" NUMBER(1,0),
"ISUNAME" VARCHAR2(20),
CONSTRAINT "PK_A63" PRIMARY KEY ("PROJPHASEID") ENABLE
)Below is the query to display the list of all the phases along with the duration of each phase which is working fine.
SELECT pp.phaseName "phasename",
pp.phaseStartDate "phaseStartDate",
pp.phaseEndDate "phaseEndDate",
pp.projPhaseStatus "projPhaseStatus",
ap.projID "projID",
ap.projName "projName",
ap.projHiddenDate "projHiddenDate",
ap.projStartDate "projStartDate",
CASE
WHEN pp.phaseEndDate IS NOT NULL
THEN MONTHS_BETWEEN(1+pp.phaseEndDate,pp.phaseStartDate)
WHEN pp.phaseEndDate IS NULL
THEN MONTHS_BETWEEN(1+sysDate,pp.phaseStartDate)
ELSE null
END "phaseMonths"
FROM AddProjectPhase pp, AddProject ap
WHERE ap.projID = pp.projID
AND ap.projHiddenDate = pp.projHiddenDate
ORDER BY ap.projIDHowever the modified query shown below to select all the phases greater than, for example, 3 months, is resulting in
ORA-00904: "PHASEMONTHS": invalid identifier SELECT pp.phaseName, pp.phaseStartDate, pp.phaseEndDate
FROM AddProjectPhase pp, AddProject ap
WHERE ap.projID = pp.projID
AND ap.projHiddenDate = pp.projHiddenDate
AND PhaseMonths IN
(SELECT
(CASE
WHEN pp.phaseEndDate IS NOT NULL
THEN MONTHS_BETWEEN(1+pp.phaseEndDate,pp.phaseStartDate)
WHEN pp.phaseEndDate IS NULL
THEN MONTHS_BETWEEN(1+sysDate,pp.phaseStartDate)
ELSE null
END) AS PhaseMonths
FROM AddProjectPhase pp, AddProject ap
WHERE ap.projID = pp.projID
AND ap.projHiddenDate = pp.projHiddenDate)
ORDER BY ap.projIDLooking for this?
select *
from (
SELECT pp.phaseName "phasename"
, pp.phaseStartDate "phaseStartDate"
, pp.phaseEndDate "phaseEndDate"
, pp.projPhaseStatus "projPhaseStatus"
, ap.projID "projID"
, ap.projName "projName"
, ap.projHiddenDate "projHiddenDate"
, ap.projStartDate "projStartDate"
, CASE WHEN pp.phaseEndDate IS NOT NULL THEN MONTHS_BETWEEN(1+pp.phaseEndDate,pp.phaseStartDate)
WHEN pp.phaseEndDate IS NULL THEN MONTHS_BETWEEN(1+sysDate,pp.phaseStartDate)
ELSE null
END "phaseMonths"
FROM AddProjectPhase pp, AddProject ap
WHERE ap.projID = pp.projID
AND ap.projHiddenDate = pp.projHiddenDate
ORDER
BY ap.projID
where "phaseMonths" >= 3 -
Unit Testing - Results greater than 0
I am unit testing a PL/SQL function. The function has no inputs and one output (Interval Day to Second) . The output is the time it takes to run a query therefore a valid value for the output would be greater than 0.
When I setup the test the result only takes a Interval Day to Second value. I want to be able to say any result greater than 0 is a success.
How can I do this?
tomI am unit testing a PL/SQL function. The function has no inputs and one output (Interval Day to Second) . The output is the time it takes to run a query therefore a valid value for the output would be greater than 0.
When I setup the test the result only takes a Interval Day to Second value. I want to be able to say any result greater than 0 is a success.
How can I do this?
tom -
KQL query using "Greater Than" fails
I have developed a CSOM app that does a KQL query against several managed properties. One of these properties is numeric (mapped to RefinableDouble01), so I have a greater than (>) comparison in the query string:
RefinableDouble01>41.12345
I developed the app in Office 365 and when I run the query there, it works fine (no errors). However, when I run it to our internal SharePoint 2013 site, it fails with the error:
"We didn't understand your search terms. Make sure they're using proper syntax."
As far as I can tell, the configuration of the internal site matches the Office 365 site.
If I use a query on a text property, so that I don't use the greater than comparison, that query works. The query results from that query also show that the managed property RefinableDouble01 is properly mapped and returns the expected numeric value.
Does anyone know what the problem is? I'm wondering if the KQL query functionality is not properly set up in our internal site, but that is not an area that I am familiar with.
Bob FeldmanHere is more information, from the ULS Log file, regarding the error:
06/27/2014 11:05:13.47 NodeRunnerQuery1-d8a6a564-7b37- (0x0BA4) 0x0DC4 Search Query Processing
aizc0 High Microsoft.Office.Server.Search.Query.Ims.ImsQueryInternal : New request: Query text 'RefinableDouble01>41.12345', Query template ''; HiddenConstraints: ; SiteSubscriptionId: 00000000-0000-0000-0000-000000000000 fa039f9c-0884-60df-c11a-64f9b09837c4
06/27/2014 11:05:13.48 NodeRunnerQuery1-d8a6a564-7b37- (0x0BA4) 0x0DC4 Search Query Processing
aizgn Medium Microsoft.Office.Server.Search.Query.Pipeline.Executors.QueryPipelineHardWiredFlowExecutor : (FlowExecutor)eventSearchFlowDone: d8a6a564-7b37-4815-a35f-f97acc0d6cba, RefinableDouble01>41.12345, Microsoft.ProductivitySearchFlow,
0, SPWFEAPP, Error=Exception occurred due to some other exception fa039f9c-0884-60df-c11a-64f9b09837c4 fa039f9c-0884-60df-c11a-64f9b09837c4
06/27/2014 11:05:13.48 NodeRunner.exe (0x0BA4) 0x0DC4 SharePoint Server Search Query
aisyt High ExecuteFlowInternal FlowExecutor:Microsoft.ProductivitySearchFlow Exception: Microsoft.Ceres.Evaluation.DataModel.CommonEvaluationException: Exception occurred due to some other exception ---> Microsoft.Office.Server.Search.Query.QueryMalformedException:
Query 'RefinableDouble01>41.12345' failed: syntax error at position 0, The operation is illegal for the given property, property expression: RefinableDouble01>41.8882213637562 --- End of inner exception stack trace ---
at Microsoft.Office.Server.Search.Query.Pipeline.Processing.KeywordQueryParserEvaluator.KeywordQueryParserProducer.ParseKeywordQuery(String queryText, ParsingContext parsingContext, Boolean debugMode, String& searchTerms) at Microsoft.Office.Server.Search.Query.Pipeline.Processing.KeywordQueryParserEvalua... fa039f9c-0884-60df-c11a-64f9b09837c4
06/27/2014 11:05:13.48 w3wp.exe (0x196C) 0x41B0 SharePoint Server Search Query
dk68 High SearchServiceApplication::Execute--Exception: Microsoft.Office.Server.Search.Query.QueryMalformedException: We didn't understand your search terms. Make sure they're using proper syntax. ---> System.ServiceModel.FaultException`1[Microsoft.Office.Server.Search.Administration.SearchServiceApplicationFault]:
Query 'RefinableDouble01>41.12345' failed: syntax error at position 0, The operation is illegal for the given property, property expression: RefinableDouble01>41.8882213637562 Server stack trace: at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime
operation, ProxyRpc& rpc) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at ... fa039f9c-0884-60df-c11a-64f9b09837c4 -
Hi all,
first of all, what I am aware about...
I am aware about the fact, that ROWNUM filters, inside the query which is to be filtered by rownum, are incorrect. That is this is incorrect:
select * from <table> where rownum < 20;
Also I am aware, that the following will never return a result:
select * from <table> where rownum > 20;
That is clear. The correct version of the "less than" query is:
select * from (select * from <table> order by a) where rownum < 20;
Now the question: what does the last example still not work with "greater than" queries:
Take e.g. following example:
select * from (
select * from dba_objects order by object_name
) where rownum > 5
;I ckeck it again. It's working for me !
Any way I'll quote it.
How ROWNUM Works
ROWNUM is a pseudocolumn (not a real column) that is available in a query. ROWNUM will be assigned the numbers 1, 2, 3, 4, ... N, where N is the number of rows in the set ROWNUM is used with. A ROWNUM value is not assigned permanently to a row (this is a common misconception). A row in a table does not have a number; you cannot ask for row 5 from a table—there is no such thing.
Also confusing to many people is when a ROWNUM value is actually assigned. A ROWNUM value is assigned to a row after it passes the predicate phase of the query but before the query does any sorting or aggregation. Also, a ROWNUM value is incremented only after it is assigned, which is why the following query will never return a row:
select *
from t
where ROWNUM > 1;
Because ROWNUM > 1 is not true for the first row, ROWNUM does not advance to 2. Hence, no ROWNUM value ever gets to be greater than 1. Consider a query with this structure:
select ..., ROWNUM
from t
where <where clause>
group by <columns>
having <having clause>
order by <columns>;
Think of it as being processed in this order:
1. The FROM/WHERE clause goes first.
2. ROWNUM is assigned and incremented to each output row from the FROM/WHERE clause.
3. SELECT is applied.
4. GROUP BY is applied.
5. HAVING is applied.
6. ORDER BY is applied.
That is why a query in the following form is almost certainly an error:
select *
from emp
where ROWNUM <= 5
order by sal desc;
The intention was most likely to get the five highest-paid people—a top-N query. What the query will return is five random records (the first five the query happens to hit), sorted by salary. The procedural pseudocode for this query is as follows:
ROWNUM = 1
for x in
( select * from emp )
loop
exit when NOT(ROWNUM <= 5)
OUTPUT record to temp
ROWNUM = ROWNUM+1
end loop
SORT TEMP
It gets the first five records and then sorts them. A query with WHERE ROWNUM = 5 or WHERE ROWNUM > 5 doesn't make sense. This is because a ROWNUM value is assigned to a row during the predicate evaluation and gets incremented only after a row passes the WHERE clause.
Here is the correct version of this query:
select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;
This version will sort EMP by salary descending and then return the first five records it encounters (the top-five records). As you'll see in the top-N discussion coming up shortly, Oracle Database doesn't really sort the entire result set—it is smarter than that—but conceptually that is what takes place. -
How to filter results of the timedifference where great than a value
To all,
How do I filter the results of this so I only get that which is greater than 2 seconds?
Here is the query:
SELECT
A.REQUEST_UU_ID, TO_CHAR(B.CREATE_BY_TS - A.CREATE_BY_TS) AS ElapsedTime
FROM
TELLER_MESSAGE A INNER JOIN TELLER_MESSAGE B ON B.REQUEST_UU_ID = A.REQUEST_UU_ID
WHERE
A.MESSAGE_TYPE_CD LIKE '%REQ%' AND
B.MESSAGE_TYPE_CD LIKE '%REP%'
ORDER BY A.REQUEST_UU_ID
Here are the results which I want to filter to get only the one row with 3 second time difference.
99ac8695-18fb-a59d-1d6b-3d2a577fff22 +000000000 00:00:03.000000 <<<this is the one I want
99ac8696-18fb-a59d-1d6b-3d2a577fff22 +000000000 00:00:02.000000
99ac8896-18fb-a59d-1d6b-3d2a577fff22 +000000000 00:00:02.000000
I tried it without the TO_CHAR casting but that gave an error.
Thanks,
EricHi, Eric,
Add this to your WHERE clause:
AND b.create_by_ts > a.create_by_ts + INTERVAL '2' SECONDOr you could add this to the join condition.
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all tables involved, and also post the results you want from that data.
Always say which version of Oracle you're using (e.g., 11.2.0.2.0).
See the forum FAQ {message:id=9360002} -
Camel Query : Calender list : Get Items agains given date that must be greater than and eqaul to start date and greater less than or equal to end date ?
A Snap of Employee holiday list
Case : Anne juul Sondergaar is on leave from 05-06-2014 to 07-06-2014
I need a query to check wheither Anne juul is on leave at 06-06-2014 ????
I am using this query that return nothing
SPQueryquery =
newSPQuery();
query.Query =
@"<Where>
<And>
<And>
<Leq>
<FieldRef Name='Til' />
<Value Type='DateTime'>"
+ WorkingStartDate.ToString("yyyy-MM-dd")
+ @"</Value>
</Leq>
<Geq>
<FieldRef Name='Fra' />
<Value Type='DateTime'>"
+ WorkingStartDate.ToString("yyyy-MM-dd")
+ @"</Value>
</Geq>
</And>
<Eq>
<FieldRef Name='Medarbejdere' />
<Value Type='Lookup'>"
+ EmployeeName.Trim() +
@"</Value>
</Eq>
</And>
</Where>"
query.ViewFields =
" <FieldRef Name='ID' />";
Ahsan RanjhaHello,
Download CAML query builder from below location and use it to build your query:
http://social.msdn.microsoft.com/Forums/sharepoint/en-US/f7b36ebc-6142-404a-8b04-9c87de272871/where-can-i-download-the-u2u-caml-query-builder-for-sharepoint-2010may-i-know-the-exact-link?forum=sharepointgeneralprevious
Hemendra:Yesterday is just a memory,Tomorrow we may never see
Please remember to mark the replies as answers if they help and unmark them if they provide no help -
Xpath query using greater than operator
I'm trying to evaluate some xml to determine if it matches some criterium.
MyXmlColumns contains the following kind of data "<Values><Value>data1</Value><Value>data2</Value><Values>"
When I execute the following query I get zero rows returned when it should match some rows containing this data.
select * from mydata
where existsNode(MyXmlColumn, '/Values/Value[. > "data1"]') = 1
The question is why greter than, lesser than, does not work, and if there is any alternative.
If I use equals operator, or greater than but using a number it works.
I know that I can use XmlExists function but I'm using Oracle 9i r2 so it's not an option.
Thanks in advance for any suggestion.but I'm using Oracle 9i r2
The question is why greter than, lesser than, does not workWorks on 9.2.0.8:
SQL> select * from v$version where rownum = 1
BANNER
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
1 row selected.
SQL> with mydata as
select xmltype('<Values><Value>data1</Value><Value>data2</Value></Values>') MyXmlColumn from dual
select * from mydata t where existsNode(t.MyXmlColumn, '/Values/Value') < 3
MYXMLCOLUMN
<Values>
<Value>data1</Value>
<Value>data2</Value>
</Values>
1 row selected. -
Is it possible to make a calculated field only appear when the result is greater than 0?
I am using Adobe Acrobat X Standard. I have created a form that has caculated fields. However, the fields always show the "$0.00" when it doesnt have anything to calculate. I would only like a result to appear in this field when the result is greater than 0. Is this possible?
The use of currency and percentage signs always behave this way since the display format is a character string and not a plain number.
You will have to use some custom JavaScript in the Custom JS calculation, the custom format format, or the validation script.
There is not a lot of documentation for this, but Acrobat JavaScripting Guide Version 6 has some infromation about usin the AFNumber_Format built-in function.
If your users are using version 8 or below, you will need to adjust the format of the field. -
Hi everyone. I have what I think is a simple query (see
below) that pulls date information from a table. As you can see
from the query, I want it to pull dates for anything greater than
and equal to today's date and anything less than and equal to a
date one week from today's date.
This works, however, CF does not output any events on today's
date; it begins outputting tomorrow's events. Can someone point me
in the right direction as how to fix this so dates for today are
output as well? Thanks!For the "up through day" portion, I truncate the time component off of now(), add a day, and then use only the less than comparison. Example:
<cfset variables.dt1 = dateAdd("d",1,int(now())) />
<cfset variables.dt2 = dateAdd("d",-8,variables.dt1) />
<p>dt1 = #variables.dt1# / dt2 = #variables.dt2#</p>
This results into:
dt1 = {ts '2013-09-28 00:00:00'} / dt2 = {ts '2013-09-20 00:00:00'}
Lastly, use the results in your query comparison:
where
[someDateField] < <cfqueryparam value="#variables.dt1#" cfsqltype="CF_SQL_DATE" />
and [someDateField] >= <cfqueryparam value="#variables.dt2#" cfsqltype="CF_SQL_DATE" />
Also, the cfsqltype of CF_SQL_DATE seems to truncate the time component off the date for you in CF9 & CF10, but I don't like dependencies like that as I've been burned in the past. If you don't mind the risk, you can simplify the logic by removing the int() function from the above. -
I am comparing two date fields from two tables. Both are in DATE format. The dates look like this: 22-Apr-2006 07:00:10 AM and 01-Jun-2007 12:00:00 AM. I am adding this statement to a WHERE clause:
and vendors.vend_obsolete_date > document_xref.acceptance_date;
In this particualr case, I should get no result because the 1st date came before the 2nd date. But when I run my program, it seems to be ignoring my > statement. Is using a greater than sign the proper syntax to compare if the 1st date field is bigger (came after) another?
Thanks!Greater than works on DATE columns, no problem. A simple test confirms it.
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jul 9 17:50:52 2007
select 'oops, something is wrong' as result
from dual
where
to_date( '22-Apr-2006 07:00:10 AM', 'dd-Mon-yyyy hh12:mi:ss AM' )
> to_date( '01-Jun-2007 12:00:00 AM', 'dd-Mon-yyyy hh12:mi:ss AM' )
no rows selectedThere must be something else about your query or data that's causing the anomaly.
Joe Fuda
SQL Snippets -
Hi ,
I have a characteristic ZMANUDATE.
Basically, I need to provide a query whereby only materials which have been manufactured greater than 90 days ago
Please adviceCheers Arun,
My concern is if I was to offset by -90 , would this result
1) show me all the machines which were produced at exactly 90 days ago
2) show me all the machines which were produced from CURRENT DATE to 90 days ago.
Option (2) is my requirement.
Please advice if your proposition will still hold.
Maybe you are looking for
-
Getting following error while deploying my webservice on weblogic 10.3
hi I am tring to deploy a webservice (spring + cxf ) in weblogic 10.3 applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns
-
So yeah, I plugged in my iPhone into my new computer that I just built for the first time, and I got this error. iTunes was working fine 2 hours before this. I have Quicktime v. 7.5.5 installed, and just downloaded iTunes yesterday. I tried reinstall
-
The meaning and how to write Report -Income Statement by Region (SD/AR)?
Hi all, I am anticipating to write some abap reports, I am new to abap..Here is one of them..Anyone can help me with writing a Report , how to do 'Income Statement by Region (SD/AR)' But since I am new to abap , if you wish to reply, please use a lit
-
BP_HEAD_SEARCH/MainSearchShuffler Defaulting category does not work
Hello, at the moment I implement the search for accounts. A requirement is, that only corporate accounts can be searched. So I enhanced the view BP_HEAD_SEARCH/MainSearchShuffler and the context node search. There I redefined the method get_v_categor
-
Crash while creating a new cRIO FPGA Project
When I want to create a new cRIO FPGA Project with the wizard, Labview freezes and crashes ("Labview 8.6 Development System had stopped working".) The wizard discovers my cRIO-9073 Integrated controller, but when it's trying to discover the CompactRI