Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вставить вычисления в табличную функцию  [new]
Debusen
Member

Откуда:
Сообщений: 187
Есть функция
-- ================================================
-- Template generated from Template Explorer using:
-- Create Inline Function (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the function.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Name
-- Create date: 
-- Description:	
-- =============================================
CREATE FUNCTION dbo.ПолучитьГорода
(	
	-- Add the parameters for the function here
	@Страна varchar(30) 
)
RETURNS TABLE 
AS
RETURN 
(   
    DECLARE @Res int
    select @Res=ID from dbo.Страны where Название=@Страна
	-- Add the SELECT statement with parameter references here
	SELECT * FROM Города WHERE Страна = @res;
)
GO
Как видим, есть скалярное значение Res, получаемое из другой таблицы. Сейчас процедура пишет ошибку.
Куда вставить
DECLARE @Res int
    select @Res=ID from dbo.Страны where Название=@Страна
Чтобы функция работала корректно?
24 ноя 11, 15:26    [11652265]     Ответить | Цитировать Сообщить модератору
 Re: Вставить вычисления в табличную функцию  [new]
Glory
Member

Откуда:
Сообщений: 104751
CREATE FUNCTION dbo.ПолучитьГорода
(	
	-- Add the parameters for the function here
	@Страна varchar(30) 
)
RETURNS TABLE 
AS
RETURN 
(   
	SELECT * FROM Города a INNER JOIN dbo.Страны b ON a.Страна = b.ID and b.Название=@Страна
)
24 ноя 11, 15:30    [11652327]     Ответить | Цитировать Сообщить модератору
 Re: Вставить вычисления в табличную функцию  [new]
Debusen
Member

Откуда:
Сообщений: 187
Пишет ошибку. В таблице "Страны" тоже есть ID, может поэтому?
Сообщение 4506, уровень 16, состояние 1, процедура ПолучитьГорода, строка 10
Имена столбцов в каждом представлении или функции должны быть уникальными. Имя столбца "ID" в представлении или функции "ПолучитьГорода" указано несколько раз.
24 ноя 11, 15:35    [11652394]     Ответить | Цитировать Сообщить модератору
 Re: Вставить вычисления в табличную функцию  [new]
Glory
Member

Откуда:
Сообщений: 104751
CREATE FUNCTION dbo.ПолучитьГорода
(
-- Add the parameters for the function here
@Страна varchar(30)
)
RETURNS TABLE
AS
RETURN
(
SELECT a.* FROM Города a INNER JOIN dbo.Страны b ON a.Страна = b.ID and b.Название=@Страна
)
24 ноя 11, 15:36    [11652403]     Ответить | Цитировать Сообщить модератору
 Re: Вставить вычисления в табличную функцию  [new]
Debusen
Member

Откуда:
Сообщений: 187
Большое спасибо ) Очень оперативно.
24 ноя 11, 15:37    [11652425]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить