Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Использование скалярной функции в select  [new]
ooooooooooora
Guest
Помогите новенькому.
Вот пришлось заниматься MS SQL после Oracle.
Имеется функция возвращающая строку по заданному ID.
Как ее использовать в select-е?

В Oracle: select func(id) Name from table
Получаю список строк, раскрывающих ID.

Пишу в MSSQL: select dbo.func(id) from table
Получаю: не могу найти столбец dbo (???)

Без dbo - не знаю функцию func.

Как получить результат, аналогичный Оракловому?
29 авг 12, 16:56    [13083923]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
TungusXan
Member

Откуда: Хочу туда где нет труда и каждый день зарплата! =)
Сообщений: 1686
select <схема функции>.<имя функции> (<параметры>)
вот так как-то
29 авг 12, 16:59    [13083938]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
ooooooooooora,

А функция создана в схеме dbo?
Скрипт функции можно посмотреть?
29 авг 12, 17:00    [13083945]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
ooooooooooora
Guest
Alexandr Kr.
ooooooooooora,

А функция создана в схеме dbo?
Скрипт функции можно посмотреть?


Да, создана в схеме dbo.
Версия MSSQL 2008 R2.

Скрипт простенький, для изучения.

create function dbo.title_by_id(@oid int) returns varchar(200)
as
begin
declare @title varchar(200);
set @title = (select title from gis.dbo.objects where id = @oid)
return @title;
end;
29 авг 12, 17:05    [13083980]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
ooooooooooora
Alexandr Kr.
ooooooooooora,

А функция создана в схеме dbo?
Скрипт функции можно посмотреть?


Да, создана в схеме dbo.
Версия MSSQL 2008 R2.

Скрипт простенький, для изучения.

create function dbo.title_by_id(@oid int) returns varchar(200)
as
begin
declare @title varchar(200);
set @title = (select title from gis.dbo.objects where id = @oid)
return @title;
end;


Хм. Этот же запрос валидный у Вас?
select title from gis.dbo.objects where id = @oid


И текст полный ошибки если можно еще.
29 авг 12, 17:09    [13084000]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
TungusXan
Member

Откуда: Хочу туда где нет труда и каждый день зарплата! =)
Сообщений: 1686
create function dbo.title_by_id(@oid int) returns varchar(200)
as
begin
declare @title varchar(200);
select @title = title from gis.dbo.objects where id = @oid
return @title;
end;

go

select dbo.title_by_id(1)

Вот так будет работать:)
29 авг 12, 17:18    [13084078]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
TungusXan


Вот так будет работать:)


Да не подходит этот вариант. Необходимо из таблички брать параметры для функции.
29 авг 12, 17:23    [13084121]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
oooooooooora
Guest
TungusXan
create function dbo.title_by_id(@oid int) returns varchar(200)
as
begin
declare @title varchar(200);
select @title = title from gis.dbo.objects where id = @oid
return @title;
end;

go

select dbo.title_by_id(1)

Вот так будет работать:)


Так и сейчас работает.
А вот так
select dbo.title_by_id(id) as title from table

получаю:

SQL Server Database Error: Не удалось найти столбец "dbo", определяемую пользователем функцию или агрегатную функцию "dbo.title_by_oid". Также возможно, имя является неоднозначным.
29 авг 12, 17:25    [13084144]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Alexandr Kr.
TungusXan


Вот так будет работать:)


Да не подходит этот вариант. Необходимо из таблички брать параметры для функции.
Подставляй в параметры поля из таблицы.

Ну или смени профессию.... :)

зы: Правильные ответы Вам уже дали. Не подходит ? Ну так и будет..... :)
29 авг 12, 17:28    [13084165]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
TungusXan
Member

Откуда: Хочу туда где нет труда и каждый день зарплата! =)
Сообщений: 1686
use <база в которой создана функция>

select dbo.title_by_id(tbl.id)  
from dbo.table as tbl

А так?
29 авг 12, 17:31    [13084187]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
ooooooooooora , прочему у Вас в сообщении об ошибке идеет указание другого объекта?
определяемую пользователем функцию или агрегатную функцию "dbo.title_by_oid". 
29 авг 12, 17:33    [13084208]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
ooooooooooora
Member

Откуда:
Сообщений: 14
LSV
Alexandr Kr.
пропущено...


Да не подходит этот вариант. Необходимо из таблички брать параметры для функции.
Подставляй в параметры поля из таблицы.

Ну или смени профессию.... :)

зы: Правильные ответы Вам уже дали. Не подходит ? Ну так и будет..... :)


А Вы посты читали? Судя по ответу не внимательно.

Про прфессию - 18 лет с Oracle и такого дебилизма, как в MS SQL не встречал ни в одной СУБД.
29 авг 12, 17:34    [13084216]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
ooooooooooora
Member

Откуда:
Сообщений: 14
HandKot
ooooooooooora , прочему у Вас в сообщении об ошибке идеет указание другого объекта?
определяемую пользователем функцию или агрегатную функцию "dbo.title_by_oid". 


Описка.
29 авг 12, 17:35    [13084226]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
ooooooooooora
Member

Откуда:
Сообщений: 14
Тема закрыта. Всем спасибо.
29 авг 12, 17:38    [13084248]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
чья описка и где?
в запросе или в сообщении об ошибке?
29 авг 12, 17:38    [13084249]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
qwerty112
Guest
HandKot
чья описка и где?
в запросе или в сообщении об ошибке?

нуу, сервера, чья жж ещё !!
автор
Про прфессию - 18 лет с Oracle и такого дебилизма, как в MS SQL не встречал ни в одной СУБД.

видно, что так "нахомутал", что даже причину постеснялся рассказать ... )
29 авг 12, 17:47    [13084328]     Ответить | Цитировать Сообщить модератору
 Re: Использование скалярной функции в select  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
qwerty112
HandKot
чья описка и где?
в запросе или в сообщении об ошибке?

нуу, сервера, чья жж ещё !!
автор
Про прфессию - 18 лет с Oracle и такого дебилизма, как в MS SQL не встречал ни в одной СУБД.

видно, что так "нахомутал", что даже причину постеснялся рассказать ... )
Ага, корпоративная этика не позволила раскрыть тему "дебилизма, как в MS SQL" :-)
29 авг 12, 18:17    [13084559]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить