Перейти к содержимому

Фотография

Хранимая процедура MS SQL


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 uhazhor

uhazhor

    Новый участник

  • Members
  • Pip
  • 36 сообщений
  • ФИО:uhazhor

Отправлено 26 июня 2011 - 06:15

Всем привет!

Ситуация следующая. Существует БД MS SQL, в которой имеется хранимая процедура. Вызываю эту хранимую процедуру, указав соответствующие значения в соответствующие параметры. В ответ возвращается всегда одна строка с одним и тем же набором полей. Задача такая. Нужно автоматизировать этот процесс: вызывать хранимую процедуру передавая соответствующие значения, обрабатывать и проверять то, что приходит в ответ.
Подскажите пжлста каким образом это можно осуществить? Может существуют какие либо специальные инструменты? Обычно я вызываю хранимую процедуру вручную в SQL Query Analyzer.
  • 0

#2 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 26 июня 2011 - 09:53

Всем привет!

Ситуация следующая. Существует БД MS SQL, в которой имеется хранимая процедура. Вызываю эту хранимую процедуру, указав соответствующие значения в соответствующие параметры. В ответ возвращается всегда одна строка с одним и тем же набором полей. Задача такая. Нужно автоматизировать этот процесс: вызывать хранимую процедуру передавая соответствующие значения, обрабатывать и проверять то, что приходит в ответ.
Подскажите пжлста каким образом это можно осуществить? Может существуют какие либо специальные инструменты? Обычно я вызываю хранимую процедуру вручную в SQL Query Analyzer.


Есть такая штука - DBUnit
или если взять любое средство автоматизированного тестирования, к примеру QTP или тескомплит, у них вроде есть спец точки верификации для проверки
  • 0

#3 uhazhor

uhazhor

    Новый участник

  • Members
  • Pip
  • 36 сообщений
  • ФИО:uhazhor

Отправлено 26 июня 2011 - 14:19

есть одно НО... вызываемая хранимая процедура не производит какие либо изменения в БД, а дергает некий прокси-сервис, в результате чего прокси-сервис возвращает ответ в хранимую процедуру. в описании DBUnit указано что он проверяет именно изменения производимые в БД. или все такие он может справиться с поставленной задачей, имеет ли смысл изучать DBUnit для решения этой задачи?
  • 0

#4 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 04 июля 2011 - 08:11

Всем привет!

Ситуация следующая. Существует БД MS SQL, в которой имеется хранимая процедура. Вызываю эту хранимую процедуру, указав соответствующие значения в соответствующие параметры. В ответ возвращается всегда одна строка с одним и тем же набором полей. Задача такая. Нужно автоматизировать этот процесс: вызывать хранимую процедуру передавая соответствующие значения, обрабатывать и проверять то, что приходит в ответ.
Подскажите пжлста каким образом это можно осуществить? Может существуют какие либо специальные инструменты?


Про специальные инструменты не знаю, но можно быстро написать скрипт, который будет вызывать хранимую процедуру и обрабатывать результат.
Например, для VBscript я быстро нагуглил пару примеров, как это сделать:

Пример 1 (http://www.eggheadca...turn-value.aspx)
CREATE PROCEDURE my_getParam
@paramName nvarchar(50)
AS
SET NOCOUNT ON
SELECT parameter_value FROM tbl
WHERE parameter_name = @paramName
GO


Dim rs,parmname,parmval
parmname="runScript"
Set rs=createobject("adodb.recordset")
adoSQLConnection.my_getParam parmName, rs
if not rs.EOF then
  parmval = rs(0)
else
  parmval="No parameter named " & parmname & " was found"
end if


Пример 2. (http://www.experts-e...Q_23851411.html)

Вызов процедуры из SQL Analyzer:
exec msdb.dbo.sp_send_dbmail   @profile_name =  'DBMail'
              ,  @recipients =  'mymailaddress@mycompany.com'
              ,  @subject =  'SQL Transaction Log'  
              ,  @query =  'exec sp_sds_custom'
              ,  @attach_query_result_as_file =  1

Код на VBScript:
Const adChar          = 129 
Const adParamOutput   = 2  
Const adParamInput    = 1  
Const adCmdStoredProc = 4
const adInteger = 5
 
Dim oCon, oRs, strCon
Dim cmdStoredFunct
Dim objExcel, defaultSheets, intRowsRead
Dim objWorkbook, objWorkSheet
Dim fso
Dim strSaveAbsolute
 
strCon = "Driver={SQL Server};Server=sslmhsql004;Initial Catalog=master;Trusted_Connection=Yes;"
 
Set oCon = WScript.CreateObject("ADODB.Connection")
oCon.Open strCon
 
Set cmdStoredFunct = CreateObject("ADODB.Command")
Set cmdStoredFunct.ActiveConnection = oCon
with cmdStoredFunct
	.CommandText = "msdb.dbo.sp_send_dbmail"
	.CommandType = adCmdStoredProc
	.Parameters.Append .CreateParameter("@profile_name", adVarWChar, adParamInput, 50, "DBMail") 
	.Parameters.Append .CreateParameter("@recipients", adVarWChar, adParamInput, 50, "kbuchanan@lmh.cc") 
	.Parameters.Append .CreateParameter("@subject", adVarWChar, adParamInput, 50, "SQL Transaction Log") 
	.Parameters.Append .CreateParameter("@query", adVarWChar, adParamInput, 50, "exec sp_sds_custom") 
	.Parameters.Append .CreateParameter("@attach_query_result_as_file", adInteger, adParamInput, 50, 1) 	
end with
 
	                        	
Set oRs = WScript.CreateObject("ADODB.Recordset")
Set oRs = cmdStoredFunct.Execute
  
oCon.Close
 
Set cmdStoredFunct = Nothing
Set oRs = Nothing
Set oCon = Nothing
 
MsgBox "Script Completed"
В переменной oRS будет результат выполнения процедуры - та строка, которая возвращается в виде объекта RecordSet
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных