我的网络表单包含一些复选框。如果选中了特定的复选框,请将列名添加到 sp 的选择查询中。假设有 4 个复选框,如 chklname、chkfname、chkcity、chkmobile。如果我检查 chklname 和 chkfname,我的查询将是:
SELECT LastName,FirstName FROM table1
sp怎么写?
我的网络表单包含一些复选框。如果选中了特定的复选框,请将列名添加到 sp 的选择查询中。假设有 4 个复选框,如 chklname、chkfname、chkcity、chkmobile。如果我检查 chklname 和 chkfname,我的查询将是:
SELECT LastName,FirstName FROM table1
sp怎么写?
CREATE PROCEDURE ProcName
@chklname bit,
@chkfname bit,
@chkcity bit,
@chkmobile bit
AS
BEGIN
SET NOCOUNT ON;
--Only execute the statement if at least one of the checkboxes are set
if @chklname = 1 or @chkfname = 1 or @chkcity =1 or @chkmobile =1
begin
declare @sqlcommand nvarchar(max)
set @sqlcommand = N'Select '
if @chklname = 1
set @sqlcommand += N'FirstName '
if @chkfname = 1
begin
if len(@sqlcommand) > 1
set @sqlcommand += N','
set @sqlcommand += N'LastName '
end
if @chkcity = 1
begin
if len(@sqlcommand) > 1
set @sqlcommand += N','
set @sqlcommand += N'City '
end
if @chkmobile = 1
begin
if len(@sqlcommand) > 1
set @sqlcommand += N','
set @sqlcommand += N'Mobile '
end
set @sqlcommand += N' FROM table1'
exec sp_executesql @statement = @sqlcommand
end
END
GO
您可以在这里做的最好的事情是通过前端代码处理要包含在 select 中的列名的数量。
例如,在 4 个复选框中,使用仅选择 2 个 fname 和 lname 复选框。
所以前端在形成sql select语句之前,可以判断哪个复选框被用户选中,哪个没有被选中。在此基础上可以形成正确的select语句。