我有一個接受參數的SQL查詢。現在,當我試圖將該查詢包含到視圖中時,我正面臨一個錯誤,因爲視圖不能像SP或函數那樣容納參數。使用參數創建SQL視圖
因此,如果我不得不創建必須包含參數的視圖,有沒有可能呢?
非常感謝
我有一個接受參數的SQL查詢。現在,當我試圖將該查詢包含到視圖中時,我正面臨一個錯誤,因爲視圖不能像SP或函數那樣容納參數。使用參數創建SQL視圖
因此,如果我不得不創建必須包含參數的視圖,有沒有可能呢?
非常感謝
我不這麼認爲,你可以創建一個視圖。但一個參數,你可以創建一個函數,該函數的輸入參數類似下面。
CREATE FUNCTION dbo.Sample (@Parameter varchar(10))
RETURNS TABLE
AS
RETURN
(
SELECT Field1, Field2,....
FROM YourTable
WHERE Field3 = @Parameter
)
ITVF(與TVF/SF相對)實際上就是如何將它合併到最終查詢中。 – user2864740 2017-05-01 16:43:26
創建一個虛擬表,其內容(列和行)由查詢定義 。使用此語句在數據庫中創建一個或更多表中的數據視圖。例如,一個視圖可以用於以下目的:
要關注,簡化和自定義每個用戶對數據庫的看法 。
作爲一個安全機構通過允許用戶通過 視圖訪問數據,而無需授予用戶的權限來直接訪問 底層基表。
提供向後兼容接口來模擬其模式已更改的表。
所以,基本上,這種行爲就像一個表,你可以添加「參數」的表中的唯一方法是通過過濾器語句訪問視圖
這是我聽到的禁止參數化視圖的最合理的解釋。儘管如此,當你需要參數來過濾子查詢時仍然很糟糕。 – Suncat2000 2017-01-04 21:45:33
非也時。 考慮作爲一個表,其中包含一個編譯的數據集(儘管實際上視圖不同於表),因此它永遠不會有任何輸入參數,如sp或函數。
你們從來沒有做過這作爲視圖是由查詢創建完全是另外一個表,你可以包括在查詢參數....這真是太簡單以及
建立你的觀點一樣,你會任何其他與參數....
實施例:
USE [iepa]
GO
/****** Object: StoredProcedure [dbo].[get_Batch_Data] Script Date: 06/30/2015 11:41:38 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[get_Batch_Data]
@inparm varchar(12)
AS
select *
from batch_data
where [email protected]
現在請像這樣的觀點:
select from get_batch_data('61404') <<<< 61404 is the parameter being passed....
非常簡單且非常強大,因爲您可以使用視圖向表的子集或表聯合提供UNALTERABLE信息。
視圖不是表格,所以有些東西你有時不能做。
但是,當你在一個查詢中形成一個非常複雜的連接/聯合時,這些都是你不能做的事情......自1999年以來一直使用上面的那個,所以我知道它的工作原理....
當你居高臨下時,你錯過了創建存儲過程而不是視圖的事實。 – Suncat2000 2017-01-04 21:45:51
非常感謝。我搜索參數化視圖,smarta **說「你彎腰,使用這個」並編寫一個存儲過程。 – vaitrafra 2017-07-19 12:54:13
視圖不能直接通過paramets,但你可以用context_info,例如
declare @v varbinary(8)
set @v = cast(cast(floor(current_timestamp as float)) as bigint) as varbinary) --
set context_info @v -- save
select * from my_viev
create my_view as
with CTE(date) as (
select cast(cast(substring(context_info(),1,8) as bigint) as datetime) date -- read
)
select * from filials p
left join filials rea on rea.number = p.number
and (date between rea.dateopen and '12.12.9999')
where date between p.datestart and p.datestop
意見**不能**有參數 - 要麼你需要返回的一切(再使用上的選擇從參數該視圖),或者您需要將其轉換爲表值存儲函數 – 2012-07-16 13:03:41
[在SQL Server 2008中創建參數化視圖]的可能重複(http://stackoverflow.com/questions/4498364/create-parameterized-view-in -sql-server-2008) – Nickolay 2013-05-04 13:01:15