是不是oracle规定,with...as语句后面只能跟select?
update,delete好像都不允许用。

解决方案 »

  1.   

    Oracle的官方描述见
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_10002.htm#i2077142
      

  2.   

    with...as其实就是select的子句,所以,一个select操作不能同时做其他操作的
      

  3.   


    我没看到,对于其后只能跟select的描述写个例子吧with TEMP_A as
    (select No from TABLE_A)
    update TABLE_B B set B.Name = 'Test' where exists (select 1 from TEMP_A A where A.No = B.No)这个例子本身没有意义,只是为了举例说明,业务SQL远比这个复杂。
    想说明的是,这个SQL在Oracle里是无法运行的,但是通过google,好像在sql server上可以。
      

  4.   

    Oracle的官方文档里对UPDATE,DELETE及INSERT的说明中都没有涉及WITH AS,只有SELECT涉及到了。
      

  5.   

    http://forums.oracle.com/forums/thread.jspa?threadID=952861&tstart=0据此人描述:
    WITH comes immediately before SELECT, not before UPDATE.但是可以用在update中。