Вернуть Oracle Ref Cursor вызывающей стороне SqlServer T-SQL - PullRequest
1 голос
/ 12 июня 2009

Возможно ли вернуть Oracle Ref Cursor вызывающей стороне, которая находится в SqlServer T-SQL? При работе с обычной программой .Net есть статья базы знаний: http://support.microsoft.com/kb/322160

Но возможен ли такой же тип вещей из T-SQL?

1 Ответ

1 голос
/ 12 июня 2009

Я считаю, что это то, что вы ищете http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/fcdaa97e-8415-4c3e-8ffd-1ad45b590d57/ (оттуда):

Мы можем использовать Script Component для выполнения хранимых процедур оракула с указателем ref в качестве параметра (ов)

Добавьте выходные столбцы к компоненту.

Например: у меня был пакет оракула Get_Employees.GetEmployees, который принимает параметр put put типа ref cursor

Я добавил 2 таких столбца EmpID и EmpName, а затем переопределил CreateNewOutputRows () как

Public Overrides Sub CreateNewOutputRows()

Try

Dim dr As OracleDataReader = oracleCmd.ExecuteReader()

While dr.Read

Output0Buffer.AddRow()

Output0Buffer.EmpID = CDec(dr(0).ToString)

Output0Buffer.EmpName = dr(1).ToString

End While

Catch ex As Exception

Me.ComponentMetaData.FireError(-1, "InitExtract", ex.Message, String.Empty, 0, True)

End Try

Output0Buffer.SetEndOfRowset()

End Sub

До этого нам нужно установить объект команды oracle в подпрограмме PreExecute как:

Dim plsql As String = "BEGIN Get_Employees.GetEmployees(:curEmployeesbyID);END;"

oracleCmd = New OracleCommand(plsql, oracleConn)

With oracleCmd

.CommandType = CommandType.Text

.Parameters.Add(":curEmployeesbyID", OracleType.Cursor).Direction = ParameterDirection.Output

End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...