0

SQL 2008 にあるストアド プロシージャを asp ページから呼び出し、それに 2 つの値を渡し、最後に 2 つの変数の数を返す必要があります。

これは私が持っているストアドプロシージャです:

        /****** STUDATATAB******/
CREATE PROCEDURE StdntReconcileDups @NewSTDNT int = NULL, @OldSTDNT int = NULL output
AS
--use ZLDP01RD;
--count = 9 rows
Select count (*) from STUDATA.dbo.STUDATATAB
 where STDNT = @NewSTDNT;

-- count = 576 rows
select count(*) from STUDATA.dbo.STUDATATAB
 where STDNT = @OldSTDNT;

-- select duplicate keys with new student# count = 3 rows
select a.STDNT,a.crs,a.CRS_VRSN,a.QSTN,a.SCR
    from STUDATA.dbo.STUDATATABa, STUDATA.dbo.STUDATATABb
        where a.STDNT = @NewSTDNT
        and b.STDNT = @OldSTDNT
        and a.crs = b.crs
        and a.CRS_VRSN=b.CRS_VRSN
        and a.QSTN=b.QSTN
        and a.SCR=b.SCR 

-- select duplicate keys with new student# count = 3 rows
select count (*)
     from STUDATA.dbo.STUDATATABa
     where exists (select 1 from STUDATA.dbo.STUDATATABb
                    where a.STDNT = @NewSTDNT
                      and b.STDNT = @OldSTDNT
                      and a.crs = b.crs
                      and a.CRS_VRSN=b.CRS_VRSN
                      and a.QSTN=b.QSTN
                      and a.SCR=b.SCR );


-- delete duplicate keys with new student# 3 rows deleted
 WITH STUDENT_CTE
  AS
  (select a.*
     from STUDATA.dbo.STUDATATABa
     where exists (select 1 from STUDATA.dbo.STUDATATABb
                    where a.STDNT = @NewSTDNT
                      and b.STDNT = @OldSTDNT
                      and a.crs = b.crs
                      and a.CRS_VRSN=b.CRS_VRSN
                      and a.QSTN=b.QSTN
                      and a.SCR=b.SCR ))
delete from STUDENT_CTE;

--Convert student #10826 history records to student #123196, should update 579 rows
UPDATE STUDATA.dbo.STUDATATAB
 SET STDNT = @NewSTDNT, LSTUPDT_USER_ID_CD = 'DFERN', LSTUPDT_TS = getDate()
 where STDNT = @OldSTDNT;

-- count= 582
select count(*) from STUDATA.dbo.STUDATATAB
 where STDNT = @NewSTDNT;

-- count= 0
Select count(*) from STUDATA.dbo.STUDATATAB
 where STDNT = @OldSTDNT;
go

コードを if 引数に挿入して、StdntReconcileDups を呼び出し、KeepSTDNT と RemoveSTDNT の値を渡したい

    Dim DBConn  ' Connection object
If Request.Form("Action") = "Go!" then


Endif
4

2 に答える 2

0

私があなたの意味を理解したら...次のようにしてください:

 SqlConnection con = new SqlConnection("Data Source=  ; initial catalog= Northwind ; User Id=  ; Password=  '");

        con.open();

SqlConnection を作成した後、以下のように Storedprocedure を作成します。

        CREATE PROCEDURE RegionUpdate (@RegionID INTEGER,@RegionDescription NCHAR(50)) AS
        SET NOCOUNT OFF
        UPDATE Region
        SET RegionDescription = @RegionDescription

実行するストアド プロシージャの名前としてのパラメーターと、実行のためにコマンドが送信される接続オブジェクト con を使用して SqlCommand オブジェクトを作成します。

        SqlCommand command = new SqlCommand("RegionUpdate",con);

コマンド オブジェクトの CommandType プロパティをストアド プロシージャに変更します。

    command.CommandType = CommandType.StoredProcedure;

Parameters コレクションと SqlParameter クラスを使用して、コマンド オブジェクトにパラメーターを追加します。

        command.Parameters.Add(new SqlParameter("@RegionID",SqlDbType.Int,0,"RegionID"));

        command.Parameters.Add(new SqlParameter("@RegionDescription",SqlDbType.NChar,50,"RegionDescription"));

パラメーターの Value プロパティを使用してパラメーターの値を指定します。

        command.Parameters[0].Value=4;

        command.Parameters[1].Value="SouthEast";

ストアド プロシージャによって影響を受ける行数を返す ExecuteNonQuery メソッドを使用して、ストアド プロシージャを実行します。

         int i=command.ExecuteNonQuery();

上記のコードは正しい方法です... @RegionID と @RegionDescription の代わりに @KeepSTDNT@RemoveSTDNT正確置き換えることができます...私はそれを自分で使用しました...さらに助けが必要な場合は...教えてください

于 2013-05-14T19:18:30.417 に答える
0

概念は、リクエストを実行することです... eofに到達するまで反復するレコードセットを取得します...次に、次のレコードセットを呼び出して次の結果を取得します。

…こんなものをお探しですか?

connectstring = "..."
sql = "StdntReconcileDups '" & NewSTDNT & "','" & OldSTDNT & "'"
set rs = Server.CreateObject("ADODB.RecordSet")

rs.Open sql, connectstring, 3
于 2013-05-14T17:23:54.253 に答える