Как выбрать один столбец таблицы с помощью функции определения пользователя в sql

#sql #sql-server

#sql #sql-сервер

Вопрос:

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

 CREATE FUNCTION dbo.Splittext(@strArgs VARCHAR(4000))
RETURNS @tab TABLE
(
    [Key] VARCHAR(25) NOT NULL,
    Value VARCHAR(40) NOT NULL
)
AS
BEGIN

INSERT INTO @tab VALUES('Key1', 'Value1')
INSERT INTO @tab VALUES('Key2', 'Value2')

RETURN
END
GO

select * from dbo.Splittext('test') run this funtion output like 

Key Value
*************
Key1    Value1
Key2    Value2
  

Приведенная ниже функция возвращает только varchar из выбранной таблицы.

        CREATE FUNCTION dbo.slecttext()
RETURNs   varchar(20)
AS
BEGIN
DECLARE @value varchar(20)
DECLARE @Table Table (keyss varchar(20), valuess varchar(20))

select  @Table  = value from dbo.Splittext('test') 

select @value  = Keyys from @Table 
 Return @value 

END
GO

    select * from  dbo.slecttext() - when i run this function 
  

Мне нужен вывод, подобный

 keyss 
********
Key1    
Key2
  

если это возможно в этом случае..

Ответ №1:

Вы близки, но во втором udf вы пытаетесь присвоить результат табличной переменной. Более простым методом было бы:

 DECLARE @Table Table (keyss varchar(20), valuess varchar(20))
INSERT INTO @Table
SELECT  * FROM dbo.Splittext('test')
SELECT keyss FROM @Table
  

Спасибо,