Nat*_*Pet 5 sql-server sql-server-2008-r2
我有以下SQL:
ALTER PROCEDURE [dbo].[usp_gettasks]
@ID varchar(50)
AS
declare @PDate Date
WHILE (DATEPART(DW, @PDate) = 1 OR DATEPART(DW, @PDate) = 7 )
BEGIN
set @PDate = DATEADD(day, 1, @PDate)
END
CREATE VIEW tblList AS
select tt.ItemOrder,tt.DisplayVal, DATEADD(day, tt.DaysDue, @PDate) from tblLine tt
where tt.ID = 1
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
语法错误:'Create VIEW'必须是批处理中唯一的语句
我GO之前尝试过Create View,但后来无法识别它的价值PDate.
Aar*_*and 10
要在存储过程中创建视图,需要在动态SQL中执行此操作(特别是因为视图本身不能接受变量).
DECLARE @sql NVARCHAR(MAX);
SET @sql = 'CREATE VIEW dbo.tblList
AS
SELECT ItemOrder, DisplayVal,
SomeAlias = DATEADD(DAY, DaysDue, ''' + CONVERT(CHAR(8), @PDate, 112)
+ ''') FROM dbo.tblLine WHERE ID = 1;';
EXEC sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)
但是一旦你第二次调用这个存储过程,它就会失败,因为你正在尝试创建一个名为的视图,dbo.tblList并且该视图已经存在.也许您可以详细说明您正在尝试的内容,其级别高于"我想在存储过程中创建视图".
| 归档时间: |
|
| 查看次数: |
14831 次 |
| 最近记录: |