поиск операторов SELECT в хранимой процедуре SQL и соответствующего запроса в ColdFusion - PullRequest
0 голосов
/ 13 февраля 2012

В ColdFusion у меня вызывается следующий cfstoredproc с 3 входами и 6 выходами.

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

В хранимой процедуре si_updateProject как мне определить 6 запросов resultSet, перечисленных для наборов результатов? Хранимая процедура имеет несколько операторов (выбор, обновление, удаление и т. Д.).

1 Ответ

1 голос
/ 14 февраля 2012

(синопсис из комментариев выше ..)

Я не знаю ни одного метода, кроме как просмотреть SQL для операторов SELECT, которые генерируют результат, и сравнивать columnListценности.

Когда мне нужно протестировать модификации хранимой процедуры с использованием виртуальных таблиц, я обычно просто закомментирую операторы CREATE PROCEDURE ... BEGIN и END и запускаю 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
...