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

Откуда: Украина г. Киев
Сообщений: 73
есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделать правильно.

CREATE FUNCTION func2 (@table_string varchar(20))
RETURNS @TABL
TABLE (
[FilID] [int] NOT NULL ,
[LagerId] [int] NOT NULL ,
[FromID] [int] NOT NULL ,
[Doctype] [tinyint] NOT NULL ,
[Kol] [numeric](18, 3) NULL ,
[SumIn] [numeric](18, 2) NULL ,
[SumZal] [numeric](18, 2) NULL ,
[SumOut] [numeric](18, 2) NULL )

AS
BEGIN

insert into @TABL
select * from @table_string

RETURN
END

как мне передавать название таблицы и так чтоб оно работало.
В таком виде не работает.


просто таблички по продажам разные по дням
SalesFil19082005
SalesFil20082005
SalesFil21082005
25 окт 05, 15:57    [2003600]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31602
BeaRoman
есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделать правильно.
Невозможно.
25 окт 05, 16:01    [2003620]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
BeaRoman
Member

Откуда: Украина г. Киев
Сообщений: 73
офигеть, не верю.

Должен быть какой-то изврат
25 окт 05, 16:04    [2003637]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
офигеть, не верю.


придется поверить.

автор
Должен быть какой-то изврат


Использовать хп. Или, если это весь скрипт функции, то накой она нужна?!
25 окт 05, 16:08    [2003668]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
aag
Member

Откуда: Москва
Сообщений: 1955
Ээээ... А нафига? Вместо insert-a писать фун-цию?

Nobody faults but mine... (LZ)
25 окт 05, 16:09    [2003675]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31602
BeaRoman
Должен быть какой-то изврат
Но вам-же изврат не нужен, ван нужно по-нормальному?

Ну, вот изврат:
CREATE FUNCTION func2 (@table_string varchar(20))
RETURNS @TABL 
TABLE (
[FilID] [int] NOT NULL ,
[LagerId] [int] NOT NULL ,
[FromID] [int] NOT NULL ,
[Doctype] [tinyint] NOT NULL ,
[Kol] [numeric](18, 3) NULL ,
[SumIn] [numeric](18, 2) NULL ,
[SumZal] [numeric](18, 2) NULL ,
[SumOut] [numeric](18, 2) NULL ) 

AS
BEGIN

if @table_string = 'TABLE1'
    insert into @TABL
    select * from TABLE3
else if @table_string = 'TABLE2'
    insert into @TABL
    select * from TABLE3
else if @table_string = 'TABLE3'
    insert into @TABL
    select * from TABLE3

RETURN 
END
25 окт 05, 16:12    [2003695]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
BeaRoman
Member

Откуда: Украина г. Киев
Сообщений: 73
суть не в том.....

пример просто такой...


как подставлять имя таблицы вот в чем грабли
25 окт 05, 16:13    [2003702]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31602
Вообще, если-бы вы описали задачу, можно было-бы найти нормальное решение.
25 окт 05, 16:13    [2003704]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
aleks2
Guest
Ну отчего...жжжж... для любителей

CREATE VIEW AllMyTables
AS
select *, 'SalesFil19082005' as name FROM SalesFil19082005
union all
select *, 'SalesFil20082005' as name FROM SalesFil20082005
union all
select *, 'SalesFil21082005' as name FROM SalesFil21082005
union all
....
ну и т.д.


CREATE FUNCTION func2 (@table_string varchar(20))
RETURNS @TABL 
TABLE (
[FilID] [int] NOT NULL ,
[LagerId] [int] NOT NULL ,
[FromID] [int] NOT NULL ,
[Doctype] [tinyint] NOT NULL ,
[Kol] [numeric](18, 3) NULL ,
[SumIn] [numeric](18, 2) NULL ,
[SumZal] [numeric](18, 2) NULL ,
[SumOut] [numeric](18, 2) NULL ) 

AS
BEGIN

insert into @TABL(...)
select ... from dbo.AllMyTables
WHERE  name=@table_string

RETURN 
END

VIEW AllMyTables каждый день переопределяешь, добавляя новую таблицу... когда надоест - перейдешь на одну таблицу... а надоест скоро.
25 окт 05, 16:14    [2003713]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
возможно(конечно не в таком виде) если сделать вьюху, на ней написать соответствующие триггеры

можно и не делать множество таблиц, а сделать одну с полем "дата". Скорее всего Вам так лучше и сделать
25 окт 05, 16:15    [2003720]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
BeaRoman
Member

Откуда: Украина г. Киев
Сообщений: 73
ну так на каждый день своя таблица, а в году много дней :)
25 окт 05, 16:20    [2003753]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
Glory
Member

Откуда:
Сообщений: 104760
BeaRoman
ну так на каждый день своя таблица, а в году много дней :)

И кроме того, число дней в году превышает лимит на число таблиц в запросе.
Но это уже проблемы вашего дизайна и/или решаемой задачи
25 окт 05, 16:21    [2003763]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31602
BeaRoman
ну так на каждый день своя таблица, а в году много дней :)
Ну так переделайте на одну таблицу с полем "дата" :-)
25 окт 05, 16:29    [2003825]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
BeaRoman
Member

Откуда: Украина г. Киев
Сообщений: 73
возможно(конечно не в таком виде) если сделать вьюху, на ней написать соответствующие триггеры

можно и не делать множество таблиц, а сделать одну с полем "дата". Скорее всего Вам так лучше и сделать


на счет вьюхи я не понял
25 окт 05, 16:42    [2003951]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
BeaRoman
Member

Откуда: Украина г. Киев
Сообщений: 73
можно по другому решить проблему но только так

вот так не работает:

CREATE FUNCTION func2 (@table_string varchar(20))
RETURNS @TABL
TABLE (
[FilID] [int] NOT NULL ,
[LagerId] [int] NOT NULL ,
[FromID] [int] NOT NULL ,
[Doctype] [tinyint] NOT NULL ,
[Kol] [numeric](18, 3) NULL ,
[SumIn] [numeric](18, 2) NULL ,
[SumZal] [numeric](18, 2) NULL ,
[SumOut] [numeric](18, 2) NULL )

AS
BEGIN

insert into @TABL
exec dbo.sp_getallsales '20050125', '20050126', 'SalesFil'

RETURN
END

Использовать временные таблички нельзя

мне надо чтоб я мог результат из хранимки использовать в
selecte * from <возвр табл>
25 окт 05, 18:00    [2004545]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
Glory
Member

Откуда:
Сообщений: 104760
BeaRoman
можно по другому решить проблему но только так

вот так не работает:

...
Использовать временные таблички нельзя

мне надо чтоб я мог результат из хранимки использовать в
selecte * from <возвр табл>

В UDF ах еще нельзя и процедуры вызывать.
25 окт 05, 18:28    [2004749]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
BeaRoman
Member

Откуда: Украина г. Киев
Сообщений: 73
Glory
BeaRoman
можно по другому решить проблему но только так

вот так не работает:

...
Использовать временные таблички нельзя

мне надо чтоб я мог результат из хранимки использовать в
selecte * from <возвр табл>

В UDF ах еще нельзя и процедуры вызывать.



так вставлять нельзя в табличку возвращаемую
если просто
exec dbo.sp_getallsales '20050125', '20050126', 'SalesFil'
то не ругаеться
25 окт 05, 18:35    [2004792]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
Glory
Member

Откуда:
Сообщений: 104760
BeaRoman

так вставлять нельзя в табличку возвращаемую
если просто
exec dbo.sp_getallsales '20050125', '20050126', 'SalesFil'
то не ругаеться

Ругаются мужики на улице.
А сервер генерирует номер ошибки и ее текст. В которых и сообщает что именно вы сделали неправильно. И кроме того в хелпе по номеру ошибки также можно найти объяснение и рекомендации
25 окт 05, 18:47    [2004867]     Ответить | Цитировать Сообщить модератору
 Re: есть функция в ней запросик, таблицы разные, в качестве параметра передаются. КАК сделат  [new]
ravilich
Member

Откуда: Санкт - Петербург
Сообщений: 42
Могу подогнать тебе хранимку с EXEC('') в теле, его нельзя в UDF использовать
25 окт 05, 19:42    [2005040]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить