2013-02-14 3 views
0

Я хотел бы получить исполняемый тип данных в SQL Server. У вас есть идея, что я должен делать?SQL Server - Процедура, выполняемая данными Тип SQL Server

USE [MO] 
GO 

DECLARE @return_value int 

EXEC @return_value = [dbo].[SBC] 
     @UserId = 1, 

SELECT 'Return Value' = @return_value 
GO 

Возвращаемое значение:

Name ID 
---------- 
Adam 1 
Jhon 2 

Например ID является int или bigint? Я могу выполнить только существующую процедуру, и вот проблема.

+0

Что именно вам нужно и что такое проблема? Не получил его – DevelopmentIsMyPassion

+0

Пожалуйста, будьте ясны ..? Мы не получаем то, что вы хотите. –

+0

Мне нужна информация о типе возвращаемого значения. Например, имя «varchar» или «nvarchar» Id - «int» или «bigint» –

ответ

0

Это «возвращаемое значение» означает индикатор состояния выполнения и является целым числом. Он не предназначен для передачи данных. Стандартные значения равны 0 для успеха, 1 для отказа, но вы можете передать любое целое число в своем SP, чтобы отобразить несколько разных статусов.

С SQL сервера файл справки:

@ RETURN_STATUS Является необязательным целой переменной, которая хранит статус возврата модуля. Эта переменная должна быть объявлена ​​в партии, хранимой процедуре или функции , прежде чем она будет использоваться в операторе EXECUTE .

При использовании для вызова скалярно-значной определяемой пользователем функции переменная return_status @ может быть любого скалярного типа данных.

Если вы хотите передать разные типы данных (и сможете запросить их «тип»), используйте «выходной параметр». Выходные параметры могут быть любого типа данных, и как только SP существует, вы можете запросить системную таблицу sys.parameters, передав в object_id вашего SP (или просто присоединитесь к sys.procedures на object_id и имя процедуры фильтрации), присоединив sys .parameters to sys.types (на user_type_id), чтобы получить имя типа данных sql каждого параметра, включая выходные параметры

Например

DECLARE @Param3 bigint 
exec dbo.MySPName @Param1, @Param2, @Param3 output 
SELECT @Param3 --gives you output value 

--This will give you the names and data types of all output parameters in this SP 
SELECT p.name, t.name as [type], p.max_length, is_output 
FROM sys.parameters p 
JOIN sys.types t ON p.user_type_id = t.user_type_id 
WHERE p.object_id = OBJECT_ID(N'MySPName') 
AND p.is_output = 1 

Для скалярной функции, этот же запрос по параметрам и типов таблиц возвращает безымянный параметр (p.name пустой строка/пустая) - это означает возвращаемое значение для ОДСА вкл типа данных , Но процедуры Store могут иметь только целое число «return status».

Смежные вопросы