SSRS - 只允许将数据输入到一个参数中
SSRS - Only allow data to be entered into one parameter
我有一个包含 3 个参数的报告。问题是,我只想将数据输入到这些参数之一。如果数据出现在多个参数中,我希望最终用户收到一条警告消息。这背后的原因是,根据什么参数有数据,它创建一个单独的 temp table 来编译结果数据。如果输入多个,它最终会锁定 SQL 服务器。
我在 SQL 2008 年。我怎样才能做到这一点?
这是我在 ssrs 中的参数:
...这是我的存储过程。如果其中一个参数包含值,则将空值传递给其他两个参数
CREATE PROC [dbo].[uspS_SerialNumberLookupReport] @_SalesOrder AS VARCHAR(10) ='', @_AQNum AS VARCHAR(10) ='', @_Serial AS VARCHAR(10) =''
AS
IF OBJECT_ID('tempdb..#SerialNumberLookupReport') IS NOT NULL
DROP TABLE #SerialNumberLookupReport
CREATE TABLE #SerialNumberLookupReport
(Company varchar(1),
Serial varchar(15),
StockCode varchar(30),
Description varchar(50),
SalesOrder int,
OrderDate datetime,
ReqShipDate datetime,
CustomerPoNumber varchar(10),
CustomerName varchar(50),
ShippingInstrs varchar(50),
ShippingCarrier varchar(50),
ShippingLink varchar(1000))
INSERT INTO #SerialNumberLookupReport
EXEC uspS_SerialNumberLookupX @SalesOrder=@_SalesOrder, @AQNum=@_AQNum, @Serial=@_Serial
INSERT INTO #SerialNumberLookupReport
EXEC uspS_SerialNumberLookupE @SalesOrder=@_SalesOrder, @AQNum=@_AQNum, @Serial=@_Serial
SELECT DISTINCT
Company
,Serial
,StockCode
,Description
,SalesOrder
,OrderDate
,ReqShipDate
,CustomerPoNumber
,CustomerName
,ShippingInstrs
,ShippingCarrier
,ShippingLink
FROM #SerialNumberLookupReport
您可以改用 2 个参数,例如
回复评论:
您可以将现有参数用作变量,例如:
create proc some_stored_proc
(@id_type varchar(30) , @value varchar(50))
as
declare
@SalesOrder varchar(50) null,
@Serial varchar(50) null,
@AQ varchar(50) null
if @id_type = 'Sales Order#'
set @SalesOrder = @value
else
if @id_type = 'Serial#'
set @Serial = @value
else
if @id_type = 'AQ#'
set @AQ = @value
我有一个包含 3 个参数的报告。问题是,我只想将数据输入到这些参数之一。如果数据出现在多个参数中,我希望最终用户收到一条警告消息。这背后的原因是,根据什么参数有数据,它创建一个单独的 temp table 来编译结果数据。如果输入多个,它最终会锁定 SQL 服务器。 我在 SQL 2008 年。我怎样才能做到这一点?
这是我在 ssrs 中的参数:
...这是我的存储过程。如果其中一个参数包含值,则将空值传递给其他两个参数
CREATE PROC [dbo].[uspS_SerialNumberLookupReport] @_SalesOrder AS VARCHAR(10) ='', @_AQNum AS VARCHAR(10) ='', @_Serial AS VARCHAR(10) =''
AS
IF OBJECT_ID('tempdb..#SerialNumberLookupReport') IS NOT NULL
DROP TABLE #SerialNumberLookupReport
CREATE TABLE #SerialNumberLookupReport
(Company varchar(1),
Serial varchar(15),
StockCode varchar(30),
Description varchar(50),
SalesOrder int,
OrderDate datetime,
ReqShipDate datetime,
CustomerPoNumber varchar(10),
CustomerName varchar(50),
ShippingInstrs varchar(50),
ShippingCarrier varchar(50),
ShippingLink varchar(1000))
INSERT INTO #SerialNumberLookupReport
EXEC uspS_SerialNumberLookupX @SalesOrder=@_SalesOrder, @AQNum=@_AQNum, @Serial=@_Serial
INSERT INTO #SerialNumberLookupReport
EXEC uspS_SerialNumberLookupE @SalesOrder=@_SalesOrder, @AQNum=@_AQNum, @Serial=@_Serial
SELECT DISTINCT
Company
,Serial
,StockCode
,Description
,SalesOrder
,OrderDate
,ReqShipDate
,CustomerPoNumber
,CustomerName
,ShippingInstrs
,ShippingCarrier
,ShippingLink
FROM #SerialNumberLookupReport
您可以改用 2 个参数,例如
回复评论: 您可以将现有参数用作变量,例如:
create proc some_stored_proc
(@id_type varchar(30) , @value varchar(50))
as
declare
@SalesOrder varchar(50) null,
@Serial varchar(50) null,
@AQ varchar(50) null
if @id_type = 'Sales Order#'
set @SalesOrder = @value
else
if @id_type = 'Serial#'
set @Serial = @value
else
if @id_type = 'AQ#'
set @AQ = @value