【发布时间】:2015-11-06 02:17:58
【问题描述】:
我有一个这样的存储过程
ALTER PROCEDURE [dbo].[GETMONITORING]
@namabarang varchar (max)
SET NOCOUNT ON;
DECLARE @nWhere varchar(4000)
SET @nwhere = ' where namabarang=''+@namabarang+'''
SELECT
tanggalpermohonan, k.namaunitkerja, l.namajenislayanan,
namabarang, kodebarang, nup, r.namaruangan, p.lokasi, masalah
FROM
permohonan p
JOIN
UnitKerja k on k.idUnitKerja = p.idUnitKerja
JOIN
JenisLayanan l on l.idJenisLayanan = p.JenisLayananID
JOIN
MasterRuangan r on r.KodeRuang = p.KodeRuang
PRINT @nwhere
end
我使用“ac”作为@namabarang 的参数来执行该存储过程,结果是所有行。如果我在这样的查询中运行
select
tanggalpermohonan, k.namaunitkerja, l.namajenislayanan,
namabarang, kodebarang, nup, r.namaruangan, p.lokasi, masalah
from
permohonan p
join
UnitKerja k on k.idUnitKerja = p.idUnitKerja
join
JenisLayanan l on l.idJenisLayanan = p.JenisLayananID
join
MasterRuangan r on r.KodeRuang = p.KodeRuang
where
namabarang = 'ac'
该查询只产生我想要的 1 行。如果我想让AC 为@parameter 的存储过程只返回一行,我该怎么办?
谢谢
【问题讨论】:
-
你没有在 SP 的任何地方使用@nwhere 变量。
-
这只是一个例子。我的问题是我想组合多个变量。例如 set @a= 'select * ' set @b= 'from table' 如何加入这些变量?所以我想要的只是@a+@b
标签: sql-server variables set declare