2013-10-02 84 views
0

我正在從事SQL遷移到Oracle遷移。 我從來沒有使用經典的ASP,我可以在這方面使用一些幫助。使用經典asp遷移Oracle到Oracle

這是我現在

<select onChange="AlterarDisabled();/*DGT();*/" name="TIPO_PLANO" id="TIPO_PLANO"> 
<% 
    sSql = "TP_15_SP" & "'" & ENTIDADE & "'" 

    set oRS = GlobaloConn.Execute(sSql) 

    do while not oRS.Eof 
     if oRS.Fields(0) = "04" then 
     if BALCAO = "B0142" or BALCAO= "B0593" then 
      %><option value="<%=oRS.Fields(0)%>"><%=oRS.Fields(1)%></option><% 
      end if 
    else 
     %><option value="<%=oRS.Fields(0)%>"><%=oRS.Fields(1)%></option><% 
    end if 
    oRS.MoveNext 
    loop 

    set oRS = nothing 
%> 
</select> 

的代碼,這是SQL存儲過程

USE [TPS] 
GO 
/* Object: StoredProcedure [dbo].[TP_15_SP] Script Date: 10/02/2013 11:09:46 */ 
SET ANSI_NULLS OFF 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[TP_15_SP] @CdEnt VARCHAR(4) 
AS 
SELECT * FROM TP_15 
WHERE CDENT = @CdEnt 
ORDER BY 1 

現在我要連接到Oracle並運行Oracle函數。 這是Oracle功能

create or replace 
function TP_15_FN(v_CdEnt IN VARCHAR2) return SYS_REFCURSOR 
as 
l_return SYS_REFCURSOR; 
BEGIN 
-- This procedure was converted on Fri Apr 05 17:05:05 2013 
    open l_return for SELECT * FROM TP_15 
    WHERE CDENT = v_CdEnt 
    ORDER BY 1 NULLS FIRST; 

    return l_return; 
END; 

,這是代碼,我應該使用調用該函數。據說我需要的是將 sSql = "TP_15_SP" & "'" & ENTIDADE & "'"更改爲sSql = "TP_15_FN(" & "'" & ENTIDADE & "')"。 這不工作,任何想法?

<select onChange="AlterarDisabled();/*DGT();*/" name="TIPO_PLANO" id="TIPO_PLANO"> 
<% 
     sSql = "TP_15_FN(" & "'" & ENTIDADE & "')" 

     set oRS = GlobaloConn.Execute(sSql) 

     do while not oRS.Eof 
      if oRS.Fields(0) = "04" then 
      if BALCAO = "B0142" or BALCAO= "B0593" then 
       %><option value="<%=oRS.Fields(0)%>"><%=oRS.Fields(1)%></option><% 
       end if 
     else 
      %><option value="<%=oRS.Fields(0)%>"><%=oRS.Fields(1)%></option><% 
     end if 
     oRS.MoveNext 
     loop 

     set oRS = nothing 
%> 
</select> 
+0

刪除/評論錯誤繼續下一步。你得到了什麼錯誤 – mhn

+0

說明:ORA-00900:無效的SQL語句 幫助上下文:0 幫助文件: 機錯誤:900 錯誤號:-2147217900 錯誤源:OraOLEDB SQL狀態: –

+0

行後sSql = 「TP_15_FN(」&「'」&ENTIDADE&「')」,如果你給出response.write(sSql) – mhn

回答

0

我設法自己動手,這很好。這是我的最終代碼。 我還必須將PLSQLRSet=1添加到我的連接字符串中。

Set cmd = Server.CreateObject("ADODB.Command") 
Set oRS = Server.CreateObject("ADODB.Recordset") 

With cmd 
    .ActiveConnection = GlobaloConn 
    .CommandText = "TP_15_SP" 
    .CommandType = 4 'adCmdStoredProc 
    .Parameters.Append cmd.CreateParameter("v_CdEnt", 129 , 1 , 4, ENTIDADE) 
End With 

Set oRS = cmd.Execute 

do while not oRS.Eof 
    if oRS.Fields(0) = "04" then 
     if BALCAO = "B0142" or BALCAO= "B0593" then 
      %><option value="<%=oRS.Fields(0)%>"><%=oRS.Fields(1)%></option><% 
     end if 
    else 
     %><option value="<%=oRS.Fields(0)%>"><%=oRS.Fields(1)%></option><% 
    end if 

    oRS.MoveNext 
loop 

oRS.Close 

Set oRS = nothing 
Set cmd = nothing