在存储过程中连接SQL语句字符串

这是一个用于企业账户搜索的存储过程,能够通过多种参数进行精确查询。它包括了企业名称、注册号等详细信息,并支持按时间段筛选注册日期。

CREATE PROCEDURE [dbo].[PUB_CORP_SEARCH]
    @oi_return            INT                OUTPUT    ,        -- 操作返回值
    @ov_message            NVARCHAR(1000)    OUTPUT    ,        -- 操作返回信息
    @iv_user            VARCHAR(30)                ,        -- 操作用户
    @iv_bankcode        VARCHAR(30)                ,        -- 银行代码
    @iv_orgcode            VARCHAR(20)                ,        -- 机构代码 
    @id_workdate        DATETIME                ,        -- 操作日期
    @iv_corptype            VARCHAR(30)                ,        -- 获取帐号
    @iv_corpcode            VARCHAR(30),                -- 获取帐户类型
    @iv_corpcname            VARCHAR(30),                -- 获取帐户拥有者中文名
    @iv_corpidno            VARCHAR(30),                    -- 获取帐户拥有者身份号
    @iv_userregfrom            VARCHAR(30),
    @iv_userregto            VARCHAR(30)
WITH EXECUTE AS OWNER
AS
BEGIN
    DECLARE  @v_moduleid  VARCHAR(50)
    DECLARE     @v_expression    NVARCHAR(4000)

    SET @v_moduleid = 'PUB_CORP_SEARCH'
    SET @oi_return = 0
    SET @ov_message = ''

    BEGIN  TRY    
    
        SET @v_expression = 'SELECT BANK_CODE,
                ORG_CODE,
                CORP_CODE,
                NAME,
                NAME_EN,
                CASE CORP_TYPE
                    WHEN ''001'' THEN ''全民所有制''
                    WHEN ''002'' THEN ''集体''
                    WHEN ''003'' THEN ''个体''
                    WHEN ''004'' THEN ''三资''
                    WHEN ''005'' THEN ''股份制''
                    WHEN ''006'' THEN ''有限责任''
                    WHEN ''007'' THEN ''个人独资''
                    WHEN ''008'' THEN ''合伙企业''
                    WHEN ''009'' THEN ''其他''
                END ''CORP_TYPE'',
                LICENSE_TYPE,
                LICENSE_NO,
                ADDRESS,
                POSTCODE,
                PHONE1,
                PHONE2,
                MANAGER,
                [GROUP],
                LOAN_CERTIFICATE,
                CORP_ID,
                CORP_REG_CODE,
                CORP_REG_CAPITAL,
                CORP_REG_DATE,
                CORP_REG_ADDRESS,
                CORP_REG_YEAR,
                CORP_PERSON_NAME,
                CORP_PERSON_ID,
                CORP_PERSON_CODE,
                MEMO,
                FLG_ACTIVE,
                REG_ORGCODE,
                REG_USER,
                REG_DATE,
                LASTUPT_ORGCODE,
                LASTUPT_USER,
                LASTUPT_DATE,
                I1,
                I2,
                I3,
                I4,
                I5,
                S1,
                S2,
                S3,
                S4,
                S5,
                S6,
                S7,
                S8,
                S9,
                S10,
                S11,
                S12,
                S13,
                S14,
                S15,
                S16,
                S17,
                S18,
                S19,
                S20,
                T1,
                T2,
                T3,
                T4,
                T5,
                D1,
                D2,
                D3,
                D4,
                D5,
                N1,
                N2,
                N3,
                N4,
                N5,
                N6,
                N7,
                N8,
                N9,
                N10,
                CREATE_USER,
                CREATE_DATETIME,
                UPDATE_USER,
                UPDATE_DATETIME,
                UPDATE_COUNT
            FROM TB_CORP
            WHERE '

        -- 过滤条件为空表示匹配所有记录
        IF  @iv_corptype = ''
            SET @iv_corptype = '%'
        ELSE
            SET @iv_corptype = '%'+@iv_corptype+'%'
        
        IF  @iv_corpcode = ''
            SET @iv_corpcode = '%'
        ELSE
            SET @iv_corpcode = '%'+@iv_corpcode+'%'

        IF  @iv_corpcname = ''
            SET @iv_corpcname = '%'
        ELSE
            SET @iv_corpcname = '%'+@iv_corpcname+'%'

        IF  @iv_corpidno = ''
            SET @iv_corpidno = '%'
        ELSE
            SET @iv_corpidno = '%'+@iv_corpidno+'%'

        IF @iv_userregfrom ='' AND @iv_userregto=''
            SET @v_expression = @v_expression + 'CORP_TYPE LIKE '''+ @iv_corptype +''' AND CORP_CODE LIKE ''' + @iv_corpcode + ''' AND NAME LIKE '''+ @iv_corpcname +''' AND LICENSE_NO LIKE '''+ @iv_corpidno+ ''' AND ORG_CODE= '''+@iv_orgcode+ ''' AND BANK_CODE= '''+@iv_bankcode+''''
        ELSE IF @iv_userregfrom ='' AND @iv_userregto!=''
            SET @v_expression = @v_expression + 'CORP_TYPE LIKE '''+ @iv_corptype +''' AND CORP_CODE LIKE ''' + @iv_corpcode + ''' AND NAME LIKE '''+ @iv_corpcname +''' AND LICENSE_NO LIKE '''+ @iv_corpidno+ ''' AND REG_DATE <= '''+ @iv_userregto+ ''' AND ORG_CODE= '''+@iv_orgcode+ ''' AND BANK_CODE= '''+@iv_bankcode+''''
        ELSE IF @iv_userregfrom !='' AND @iv_userregto=''
            SET @v_expression = @v_expression + 'CORP_TYPE LIKE '''+ @iv_corptype +''' AND CORP_CODE LIKE ''' + @iv_corpcode + ''' AND NAME LIKE '''+ @iv_corpcname +''' AND LICENSE_NO LIKE '''+ @iv_corpidno+ ''' AND REG_DATE >= '''+ @iv_userregfrom+ ''' AND ORG_CODE= '''+@iv_orgcode+ ''' AND BANK_CODE= '''+@iv_bankcode+''''
        ELSE
            SET @v_expression = @v_expression + 'CORP_TYPE LIKE '''+ @iv_corptype +''' AND CORP_CODE LIKE ''' + @iv_corpcode + ''' AND NAME LIKE '''+ @iv_corpcname +''' AND LICENSE_NO LIKE '''+ @iv_corpidno+ ''' AND REG_DATE <= '''+ @iv_userregto+ ''' AND REG_DATE >= '''+ @iv_userregfrom +''' AND ORG_CODE= '''+@iv_orgcode+ ''' AND BANK_CODE=''' +@iv_bankcode+''''
            
        
        EXEC sp_executesql @v_expression

        
    END TRY
    BEGIN CATCH
        SET @oi_return = ABS(ERROR_NUMBER()) * (-1)
        SELECT @ov_message = CONVERT(VARCHAR(20),@oi_return) + ' : ' + ERROR_MESSAGE()

        EXEC [dbo].[SYS01_LOG_ERROR]
                @iv_user        ,
                @v_moduleid        ,
                @ov_message
        RETURN
    END CATCH
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值