这是我尝试复制的代码
ALTER PROCEDURE [dbo].[USP_REPORTING_Buku]
@Kategori NVARCHAR(10),
@Penerbit NVARCHAR(50),
@Terbit DATE,
@TerbitOld DATE
AS
BEGIN
SET NOCOUNT ON;
SELECT
BookID, ISBN, Judul, Kategori, Terbit, Penerbit
FROM
dbo.tblM_Buku
WHERE
Kategori '%' + @Kategori + '%'
AND Penerbit '%' + @Penerbit + '%'
OR (Date BETWEEN @DateOld AND @Date)
END
但是我试图删除“ Penerbit”,而仅使用kategori和日期。
所以我用
ALTER PROCEDURE [dbo].[USP_REPORTING_Buku]
@Kategori NVARCHAR(10),
@Date DATE,
@DateOld DATE
AS
BEGIN
SET NOCOUNT ON;
SELECT
BookID, ISBN, Judul, Kategori, Date
FROM
dbo.tblM_Buku
WHERE
Kategori '%' + @Kategori + '%'
OR (Date BETWEEN @DateOld AND @Date)
END
但是我得到一个错误:
必须声明标量变量“ @DateOld”
我该如何解决?
答案 0 :(得分:0)
我同意@Dale Burrel的观点,因为定义@DateOld时一定不要出错。但是,过程中缺少'like'关键字的子句,并且在“ ALTER PROCEDURE”之后和“ AS BEGIN”之前也使用了括号,这是一个问题。下面是正确的存储过程:
ALTER PROCEDURE [dbo].[USP_REPORTING_Buku]
(
@Kategori nvarchar(10),
@Date date,
@DateOld date
)
AS
BEGIN
SET NOCOUNT ON;
SELECT BookID, ISBN, Judul, Kategori, Date
FROM dbo.tblM_Buku
WHERE Kategori like '%' + @Kategori + '%'
OR (Date BETWEEN @DateOld AND @Date)
END
希望它能解决您的问题。