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

Откуда:
Сообщений: 22
Добрый день! Подскажите, пожалуйста, возможно ли сделать запрос-преставление с "передачей параметра". То, что в представлениях не используются параметры, я знаю, а вот как можно передать в представление значение. Читал что-то про функции, но так и не доразобрался. Вернее пробывал, но что-то не получилось. Помогите, подскажите, в каком хоть направлении двигаться.
25 фев 13, 13:49    [13976489]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
var_fj54j
Читал что-то про функции, но так и не доразобрался
значит надо продолжить читать
http://msdn.microsoft.com/ru-ru/library/ms186755.aspx
25 фев 13, 13:52    [13976512]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Glory
Member

Откуда:
Сообщений: 104751
var_fj54j
То, что в представлениях не используются параметры, я знаю, а вот как можно передать в представление значение.

Т.е. если в хелпе написано, что нельзя, но очень хочется, то тогда наверняка есть способ по-вашему ?

var_fj54j
Читал что-то про функции, но так и не доразобрался. Вернее пробывал, но что-то не получилось. Помогите, подскажите, в каком хоть направлении двигаться.

Двигаться в направлентт - Читать и разбираться с табличными функциями
25 фев 13, 13:52    [13976515]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Glory, недавно был аналогичный вопрос:) Не совсем параметр, но очень на него похоже- найти все машины автовладельца по номеру одной из них:)
with 
CARS as (select * from (values
   ('name1','AA 0000'), ('name1','AA 0010'), ('name1','AA 0100'), ('name2','AA 0002')
   )t(name,carNumber)),
carView as (
   select a.name, a.carNumber allCars, v.carNumber
   from CARS v
   join CARS a on a.name=v.name
   )
SELECT *
FROM carView
WHERE carNumber ='AA 0000'
25 фев 13, 14:05    [13976620]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
var_fj54j
Member

Откуда:
Сообщений: 22
Glory
Т.е. если в хелпе написано, что нельзя, но очень хочется, то тогда наверняка есть способ по-вашему ?

Нет, где-то на сайтах попадалось такое: создаем функцию, которая будет возвращать какое-либо значение, например, имеем функцию GetRashod('11127'), соответственно '11127' - это то, что нужно передать в представление. В представление передаем, например, так: SELECT * FROM Rashod WHERE id_rashod = GetRashod('11127'). С этим все нормально, а как можно средствами Access функции передать значение, т.е. '11127'. Чтобы функция приняла это значение и передала его в представление.
25 фев 13, 14:07    [13976636]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Glory
Member

Откуда:
Сообщений: 104751
var_fj54j
Нет, где-то на сайтах попадалось такое: создаем функцию, которая будет возвращать какое-либо значение, например, имеем функцию GetRashod('11127'), соответственно '11127' - это то, что нужно передать в представление.

При использовании параметризированных функций внутри представления у последнего все равно не поменяется синтаксис и не появится возможность вызова с параметром.
25 фев 13, 14:10    [13976670]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
var_fj54j
Читал что-то про функции, но так и не доразобрался. Вернее пробывал, но что-то не получилось.

Ну выкладывайте то, что не получилось. Может, удастся доработать.
25 фев 13, 14:18    [13976712]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
var_fj54j
Member

Откуда:
Сообщений: 22
Подскажите как быть, нужен запрос, который бует возвращать динамическую таблицу. Где его можно реализовать?
25 фев 13, 14:20    [13976720]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Glory
не появится возможность вызова с параметром.
Эээ... а это что - разве не вызов с параметрами??
create table CARS (name nvarchar(100), carNumber nvarchar(100) unique)
insert CARS values ('name1','AA 0000'), ('name1','AA 0010'), ('name1','AA 0100'), ('name2','AA 0002')
GO
create view carView as 
   select a.name, a.carNumber allCars, v.carNumber
   from CARS v
   join CARS a on a.name=v.name
GO

declare @parameter nvarchar(100)
set @parameter = 'AA 0000'

SELECT name, allCars FROM carView WHERE carNumber = @parameter

drop view carView
drop table CARS
25 фев 13, 14:21    [13976734]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
MiCe
Member

Откуда: RUSSIA STAVROPOL Pyatigorsk
Сообщений: 1996
select
25 фев 13, 14:24    [13976756]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
MiCe, а вы умеете вызывать view не из селекта?
25 фев 13, 14:25    [13976769]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Нет, я конечно понимаю, что написать ...from CarView(@parameter)... нельзя :) но передать параметр в WHERE - отчего же нет?
25 фев 13, 14:28    [13976794]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
MiCe
Member

Откуда: RUSSIA STAVROPOL Pyatigorsk
Сообщений: 1996
Cygapb-007
Нет, я конечно понимаю, что написать ...from CarView(@parameter)... нельзя :) но передать параметр в WHERE - отчего же нет?
select.... =) можно и не в where......
25 фев 13, 14:50    [13977051]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
MiCe
Cygapb-007
Нет, я конечно понимаю, что написать ...from CarView(@parameter)... нельзя :) но передать параметр в WHERE - отчего же нет?
select.... =) можно и не в where......
JOIN ON - это тот же WHERE... а как еще передать параметр в готовую (очень сложную) VIEW?
25 фев 13, 14:53    [13977083]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
MiCe
Member

Откуда: RUSSIA STAVROPOL Pyatigorsk
Сообщений: 1996
а что такое параметр?
25 фев 13, 14:55    [13977095]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
var_fj54j
Member

Откуда:
Сообщений: 22
Сделал так. Создал функцию с параметром, которая возвращает таблицу. Запускаю запрос
+
SELECT        КодРасходаЛек, КодРасхода, КодПрихода, КолЛекРасх, Удалена, КодСессии, Сумма, ЛекарствоФорма, КодЛекарства
FROM            dbo.fnRashodList(11697) AS fnRashodList_1

В Visual Studio запрос запускается и является обновляемым. Делаю такой же запрос в Access, он становиться не обновляемым. Вопрос, почему?
26 фев 13, 11:16    [13981266]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
var_fj54j,

что внутри функции?
Что вернёт
SELECT type FROM sys.objects WHERE name=N'fnRashodList';
26 фев 13, 11:23    [13981326]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
var_fj54j
Member

Откуда:
Сообщений: 22
Поле type и значение этого поля IF
26 фев 13, 11:29    [13981384]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
var_fj54j
Member

Откуда:
Сообщений: 22
и что это значит?
26 фев 13, 11:54    [13981531]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
var_fj54j
Поле type и значение этого поля IF
Значит, скорее всего функция обновляемая (хотя, зависит от SELECTа внутри функции, конечно).
Может, там сплошные агрегатные функции, к примеру. Или UNION. Да мало ли что ещё.
Наверно, надо и с Accessом разбираться.
26 фев 13, 12:01    [13981574]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
var_fj54j
и что это значит?
Это значит "табличная inline функция"
То, что inline, - это хорошо!
Если б другого типа, то сразу можно было бы сказать, что необновляемая.
26 фев 13, 12:03    [13981590]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
Автор, раз уж нужно использовать это в Access, так может в нем и создать объект "запрос", обращающийся к таблице в MSSQL?
26 фев 13, 12:07    [13981613]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
qwerty112
Guest
var_fj54j
...
Делаю такой же запрос в Access, он становиться не обновляемым. Вопрос, почему?

"в Access" - что имеется в виду ? это адп-проект или что ?
как делаешь "такой же запрос в Access" ?
26 фев 13, 12:08    [13981627]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
var_fj54j
Member

Откуда:
Сообщений: 22
То, что функция обновляемая это и так известно. Когда ее применяем в запросе в SQLSERVER 2008, запрос выдает данные, которые можно обновить. Тот же запрос делаем в Access, данные появляются те, что нужно, но их нельзя обновить. Как можно это исправить?
26 фев 13, 12:16    [13981685]     Ответить | Цитировать Сообщить модератору
 Re: Как в представление передать значение в виде параметра.  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
а в таблице присутствует PK?
26 фев 13, 12:19    [13981703]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить