Как определить типы данных после выполнения хранимой процедуры? - PullRequest
3 голосов
/ 28 августа 2008

Есть ли способ при выполнении хранимой процедуры в Management Studio вернуть типы данных наборов результатов? Я ищу что-то вроде функциональности, когда вы передаете имя таблицы в sp_help

Ответы [ 6 ]

1 голос
/ 01 октября 2008

Лучше всего было бы изменить хранимую процедуру на функцию. Но это работает, только если ваша среда это позволяет.

1 голос
/ 28 августа 2008

Тем не менее, вы можете взглянуть на типы, если вызовете хранимую процедуру через ADO, ADO.NET, ODBC и т. П. Полученные наборы записей содержат информацию о типе, которую вы ищете. Вы действительно ограничены Management Studio?

0 голосов
/ 01 октября 2008

Это не самое элегантное решение, но вы можете использовать OPENROWSET, чтобы поместить результаты сохраненных процедур в таблицу, а затем использовать sp_help, чтобы получить описание.

например

select * into tmp_Results 
from openrowset( 'SQLOLEDB.1'
               , 'Server=your_server_name;Trusted_Connection=yes;'
               , 'exec your_stored_proc')
exec sp_help 'tmp_Results'
drop table tmp_Results
0 голосов
/ 01 октября 2008

На самом деле, вы можете сделать это из SP:

EXEC ('if exists (select * from sys.tables where name = ''tmp_TableName'') drop table tmp_TableName')

EXEC ('select * into tmp_TableName from MyTable')

-- Grab the column types from INFORMATION_SCHEMA here

EXEC ('if exists (select * from sys.tables where name = ''tmp_TableName'') drop table tmp_TableName')

Хотя, я думаю, должен быть лучший способ.

0 голосов
/ 15 сентября 2008

Вы всегда можете использовать фактическую таблицу, которая гарантированно является уникальной. Это кладжа, но это вариант. Это не будет работать внутри хранимого процесса.

if exists (select * from sys.tables where name = 'tmp_TableName')
    drop table tmp_TableName
go
select * into tmp_TableName from MyTable

--do some stuff

go
if exists (select * from sys.tables where name = 'tmp_TableName')
    drop table tmp_TableName
go
0 голосов
/ 28 августа 2008

Ни один простой способ не приходит в голову, не разбирая syscomments, чтобы увидеть, что он запрашивает откуда. Если вы можете отредактировать SP для выбора XML, вы можете добавить XML_INFO к запросу, чтобы получить схему обратно.

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