CTE 在 SQL 服务器存储过程中不工作
CTE not working in a SQL Server stored procedure
当我在 C# 应用程序中使用 CTE 时,我正在编写一个存储过程,但由于某些原因,该存储过程没有返回任何数据
这是我的存储过程
ALTER procedure [dbo].[sp_GetBrokerData]
@broker Varchar
as
Begin
With CTE AS
(
select
Product, Term,
CASE
WHEN BidBroker = @broker THEN BidBroker
ELSE null
END AS BidBroker,
CASE
WHEN BidBroker = @broker THEN BidVolume
ELSE null
END AS BidVolume,
CASE
WHEN BidBroker = @broker THEN BidCP
ELSE null
END AS BidCP,
CASE
WHEN BidBroker = @broker THEN Bid
ELSE null
END AS Bid,
CASE WHEN OfferBroker = @broker THEN Offer ELSE null end as Offer,
CASE WHEN OfferBroker = @broker THEN OfferCP ELSE null end as OfferCP,
CASE WHEN OfferBroker = @broker THEN OfferVolume ELSE null end as OfferVolume,
CASE WHEN OfferBroker = @broker THEN OfferBroker ELSE null end as OfferBroker
from
canadiancrudes
)
Select *
From CTE
Where not (Bid is null and Offer is null)
End
请问上面的过程有什么问题吗?
类型为varchar
的变量的默认长度为1。只需将存储的过程参数类型长度更改为适当的:
例如@broker varchar(20)
当我在 C# 应用程序中使用 CTE 时,我正在编写一个存储过程,但由于某些原因,该存储过程没有返回任何数据
这是我的存储过程
ALTER procedure [dbo].[sp_GetBrokerData]
@broker Varchar
as
Begin
With CTE AS
(
select
Product, Term,
CASE
WHEN BidBroker = @broker THEN BidBroker
ELSE null
END AS BidBroker,
CASE
WHEN BidBroker = @broker THEN BidVolume
ELSE null
END AS BidVolume,
CASE
WHEN BidBroker = @broker THEN BidCP
ELSE null
END AS BidCP,
CASE
WHEN BidBroker = @broker THEN Bid
ELSE null
END AS Bid,
CASE WHEN OfferBroker = @broker THEN Offer ELSE null end as Offer,
CASE WHEN OfferBroker = @broker THEN OfferCP ELSE null end as OfferCP,
CASE WHEN OfferBroker = @broker THEN OfferVolume ELSE null end as OfferVolume,
CASE WHEN OfferBroker = @broker THEN OfferBroker ELSE null end as OfferBroker
from
canadiancrudes
)
Select *
From CTE
Where not (Bid is null and Offer is null)
End
请问上面的过程有什么问题吗?
类型为varchar
的变量的默认长度为1。只需将存储的过程参数类型长度更改为适当的:
例如@broker varchar(20)