sql - 如何在视图中使用参数
问题描述
我尝试使用参数将值分配给视图,但出现错误:
'ALTER VIEW' 必须是查询批处理中的第一条语句。
使用 GO 语句时,无法访问变量。
如何将参数分配给视图。
USE [DBNAME]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DECLARE @CA_Removal varchar(max)
SET @CA_Removal=(SELECT value FROM spider.Configuration WHERE id='Removal')
GO
ALTER view [spider3].[View] WITH SCHEMABINDING
as
select
asa.id,
ase.common,
from
[spider].Activity asa
inner join
[spider].External ase
on
asa.primaryKey = ase.owner
where
asa.type = TRY_CONVERT(int, @CA_Removal)
当asa.type = 10
它正常工作时。
解决方案
你不想要一个视图。你想要一个表值函数:
create function spider3.udf_spider (
@CA_Removal varchar(max)
) returns table
as return(select asa.id, ase.common
from [spider].Activity asa join
[spider].External ase
on asa.primaryKey = ase.owner
where asa.type = TRY_CONVERT(int, @CA_Removal)
);
传入一个您只需转换为整数的字符串似乎真的很尴尬。我强烈建议您将值作为整数传递:
create function spider3.udf_spider (
@CA_Removal int
) returns table
as return(select asa.id, ase.common
from [spider].Activity asa join
[spider].External ase
on asa.primaryKey = ase.owner
where asa.type = @CA_Removal
);
推荐阅读
- reactjs - 我无法从 api 获取数据以做出反应
- c# - Newtonsoft JsonConvert vs System.Web.Helpers Json - 类型转换问题
- prestashop - 数据库中的 Prestashop 数量为 0,但实际数量显示在 BO
- mysql - 如何集成安全消息传递反应原生聊天项目?
- java - 非遗传局部搜索算法
- python - Python discord webhook 并没有真正提到角色
- r - R:如何查找文件中的哪些行负责两个“人口”
- mysql - 如何在生产应用程序上运行测试而不留下痕迹?
- c# - C# 将鼠标事件转发到另一个窗口而不失去焦点
- webrtc - Janus-gateway:ReferenceError:未定义适配器