2010-01-22 196 views
3

XSD模式我有一個SQL SELECT語句:是否有SQL Select語句

SELECT Code, Description 
    FROM Table1 
WHERE (Code='a' and Amount>100) or (Code='b' and Amount<100) 

我希望用XML來呈現SELECT語句。這是我最初的設計:

<select table="Table1"> 
    <columns> 
     <column name="Code"/> 
     <column name="Description"/> 
    </columns> 
    <filters> 
    <or> 
     <and> 
     <filter field="Code" cond="eq" value="a"/> 
     <filter field="Amount" cond="gt" value="100"/> 
     </and> 
     <and> 
     <filter field="Code" cond="eq" value="b"/> 
     <filter field="Amount" cond="lt" value="100"/> 
     </and> 
    </or>  
    </filters> 
</select> 

但是,我不滿意它。找到用於SQL SELECT語句的XSD要複雜得多。它們在SQL SELECT語句中有許多我沒有包括的特性,例如:Aggregates,Inner/Outer Join,Between,IN,Sub Select等。

設計這樣的模式已經超出了我的能力。有沒有人知道是否有這樣的XSD到SQL Select語句表示?

回答

2

我希望使用XML來呈現SELECT語句。

但你必須使用XML?如果你不這樣做,你就不應該這樣做,因爲使用XML作爲編程語言的定義是一個非常糟糕的主意。即使XML不使用XML來實現own query language

如果您需要定義一種編程語言,那麼您應該使用正式的語法。 Antlr是一個可以用來定義這種語法的工具。

如果你的工作依賴於使用XML,並且如果你被解僱了,你的妻子和孩子會餓死,那麼我會不情願地承認你應該繼續下去,否則立即停止!

+0

+1 Antlr之前的婦女和兒童 – 2010-01-22 03:24:55

+0

我不認爲在編程語言中使用xml是一個糟糕的主意。在Delphi中,我可以從XSD生成xml文檔類。我不打算解析SQL,但我只是尋找能夠呈現SQL Select語句的XSD。從那裏,如果我想從數據庫中查詢,我可以使用XSLT生成一條SQL語句。或者我可以創建一個SQL編輯器,以編程方式幫助我形成SQL select語句。 – 2010-01-22 05:43:49

+1

@Chau Chee Yang:也許你應該查看開發SQL編輯器的開源項目...可能會有一些使用xsd模式。 – Filburt 2010-01-22 12:27:40