-2

我的网络表单包含一些复选框。如果选中了特定的复选框,请将列名添加到 sp 的选择查询中。假设有 4 个复选框,如 chklname、chkfname、chkcity、chkmobile。如果我检查 chklname 和 chkfname,我的查询将是:

SELECT LastName,FirstName FROM table1

sp怎么写?

4

2 回答 2

2
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
于 2012-09-06T09:30:36.303 回答
0

您可以在这里做的最好的事情是通过前端代码处理要包含在 select 中的列名的数量。

例如,在 4 个复选框中,使用仅选择 2 个 fname 和 lname 复选框。

所以前端在形成sql select语句之前,可以判断哪个复选框被用户选中,哪个没有被选中。在此基础上可以形成正确的select语句。

于 2012-09-06T09:20:51.553 回答