2012-02-13 2 views
0

В ColdFusion у меня есть следующий cfstoredproc, который вызывается с 3 входами и 6 выходами.размещение операторов SELECT в SQL Хранимой процедуре и соответствующем запросе в 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> 

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

+1

Стадион: Большая проблема возникает, если вы решите проблему? Потому что мне неизвестен какой-либо другой метод, кроме того, что вызывается sql для операторов SELECT, которые генерируют результат и сравнивают значения 'columnList'. т.е. первый оператор будет соответствовать resultSet = 1, второй - resultSet = 2 и т. д. – Leigh

+0

@Leigh - мне нужно изменить один из операторов select, чтобы включить некоторые новые критерии, и просто нужно обновить правильный SQL-оператор. Хранимыйproc работает с большим количеством виртуальных таблиц, поэтому я не могу просматривать вывод после завершения сохранения. Я делал то, что вы предлагали, но я не могу подтвердить данные, поскольку хранимый файл работает с виртуальными таблицами - если вы не знаете другого трюка, который вы можете мне научить. – HPWD

+1

Существует действительно не простой способ. Когда мне нужно проверить модификацию хранимой процедуры, я обычно комментирую инструкции 'CREATE PROC ... BEGIN' и' END' и запускаю содержимое вручную в анализаторе запросов. Дайте мне минуту, чтобы опубликовать пример. – Leigh

ответ

1

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

Я не знаю ни одного другого метода, кроме Eyeballing 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