2013-02-19 52 views
1

我有下面的代码,我想变成一个视图。但是我不能在视图中声明varchar。声明varchar查看问题

任何人都可以在此方面提供建议吗?

Sql代码 -

DECLARE @PROJECTNUMBER VarChar 
SELECT  SUM(PAFeeAmount) FeeAmount 
FROM   PA02101 
WHERE  PAPROJNUMBER = @PROJECTNUMBER 

感谢,

+1

你不能在视图内部做到这一点,只是让它没有'WHERE'子句,然后过滤从视图选择:'SELECT * FROM Viewname where ...'。 – 2013-02-19 14:52:27

+0

为什么你想要在视图中? – HLGEM 2013-02-19 14:54:23

回答

1

尝试创建一个inline table-valued函数。例如:

CREATE FUNCTION dbo.fxSample(@PROJECTNUMBER VARCHAR(20)) 
RETURNS TABLE 
AS 
RETURN 
(
    SELECT SUM(PAFeeAmount) FeeAmount 
    FROM PA02101 
    WHERE PAPROJNUMBER = @PROJECTNUMBER 
) 

-- Then call like this, just as if it's a table/view just with a parameter 
SELECT * FROM dbo.fxSample('hello') 
1

如果你想传递参数( s)到VIEW,你不能那样做。在视图选择过程中,使用分组依据和过滤器简单地进行如下视图。

CREATE VIEW myView 
AS 
    SELECT PAPROJNUMBER, SUM(PAFeeAmount) FeeAmount 
    FROM PA02101 
    GROUP BY PAPROJNUMBER 


--Select like below. (may be passing it to a stored procedure) 
declare @projectNumber varchar(50) --remember to give a length 

select * from myView 
where projectNumber = @projectNumber