2012-02-13 7 views
0

ColdFusionでは、以下のcfstoredprocが3つの入力と6つの出力で呼び出されています。ストアドプロシージャ、si_updateProjectで内SQLストアドプロシージャ内のSELECT文とColdFusionでの対応するクエリの検索

<cfstoredproc procedure="si_updateProject" datasource="#mydsn#" returncode="yes"> 
    <cfprocparam type="IN" cfsqltype="CF_SQL_VARCHAR" value="#platform#"> 
    <cfprocparam type="IN" cfsqltype="CF_SQL_VARCHAR" value="#projectData#"> 
    <cfprocparam type="IN" cfsqltype="CF_SQL_VARCHAR" value="#sysData#"> 
    <cfprocresult name="projectInfo" resultSet=1> 
    <cfprocresult name="newPSA" resultSet=2> 
    <cfprocresult name="newStatus" resultSet=3> 
    <cfprocresult name="goliveSystems" resultSet=4> 
    <cfprocresult name="goliveHistory" resultSet=5> 
    <cfprocresult name="newSystems" resultSet=6> 
</cfstoredproc> 

のResultSetのためにリストされているように、私は6つのResultSetクエリをどのように識別していますか?ストアドプロシージャには、いくつかのステートメント(選択、更新、削除など)があります。

+1

あなたが解決しようとしているより大きな問題はありますか?なぜなら、結果を生成し、 'columnList'値を比較するSELECT文のためにsqlを目の当たりにする以外の方法は知らないからです。つまり、最初の文はresultSet = 1、2番目の文はresultSet = 2などになります。 – Leigh

+0

@Leigh - 新しい条件を含めるためにselect文の1つを修正し、正しいSQL文を更新する必要があります。 storedprocは多くの仮想テーブルで動作するので、storedprocが完了すると出力を見ることはできません。私はあなたが提案したことをしていたが、私はあなたが私に教えることができる別のトリックを知らない限り、storedprocが仮想テーブルで動作するので、データを確認できません。 – HPWD

+1

本当に簡単な方法はありません。ストアドプロシージャの変更をテストする必要があるときは、通常はCREATE PROC ... BEGINとEND文をコメントアウトし、クエリアナライザで内容を手動で実行します。一例を投稿する時間をください。 – Leigh

答えて

1

(上記のコメントからのあらすじ...)

私は結果を生成し、columnList値を比較SELECT文のSQLをeyeballing以外の方法を認識していないです。

仮想テーブルを含むストアドプロシージャの変更をテストする必要があるときは、通常、CREATE PROCEDURE ... BEGINENDステートメントをコメントアウトし、クエリアナライザでsqlを手動で実行します。非常に低い技術ですが、迅速なテストに役立ちます。

--- Comment out the procedure wrapper and run the sql in 
--- the query analyzer manually with test parameters 
DECLARE @platform varchar(50) 
DECLARE @projectData varchar(50) 
DECLARE @sysData varchar(50) 

SET @platform = 'foo' 
SET @projectData = 'bar' 
SET @sysData = 'qax' 

/*  
CREATE PROCEDURE si_updateProject 
     @platform varchar(50) 
     , @projectData varchar(50) 
     , @sysData varchar(50) 
AS 
BEGIN 
*/ 

     -- simulate some virtual tables 
     DECLARE @table1 TABLE (columnOne varchar(50), createdDate datetime) 
     DECLARE @table2 TABLE (columnTwo varchar(50), createdDate datetime) 
     DECLARE @table3 TABLE (columnThree varchar(50), createdDate datetime) 

     -- now you can do whatever debugging you want with the virtual tables ... 
     SELECT 'Testing the 1st resultset' AS DebugText, * 
     FROM @table1 


     -- simulate some resultsets 
     SELECT columnOne FROM @Table1 
     SELECT columnTwo FROM @Table2 
     SELECT columnThree FROM @Table3 

/* 
END */ 
GO 
関連する問題