0

SQLからOracleへの移行に取り組んでいます。私は古典的なASPを使用したことがないので、これについていくつかの助けを借りることができました.

これは私が今持っているコードです

<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 関数を実行する必要があります。これがオラクル関数

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>
4

1 に答える 1

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
于 2013-10-03T11:25:27.810 に答える