存储过程以显示来自sql server的值

时间:2014-03-18 13:44:06

标签: sql sql-server vb.net winforms

我正在vb.net中开发一个Windows应用程序。我需要根据特定条件从表中检索值。我的sql server表如下。

tbl ACCOUNT_DETAIL

enter image description here

我的Windows窗体中有一个文本框,用于显示相应的GL_Account。用户将 paidto 值传递给后端,并且该过程必须返回相应的 GL_Account 。但还有一个标准:从数据库中检索GL_Account时,我们需要检查整个家庭。如果WholeFamily为1,则应检索以GL_Account开头的所有帐户(应从另一个表获取)。否则只有来自"这个"的GL_Account。表格需要发送。包含整个帐户信息的表格在

下面

tbl ACCOUNT_MASTER。

enter image description here

我在这里只显示了表中的部分数据。

我创建了一个Cursor来从Account_Detail表中获取值。但在获取值后,我需要检查WholeFamily并根据我需要将值传递给前端的位。

@PaidTo(int)是从前端传递的SP参数。

DECLARE @GLAccount VARCHAR(50)     DECLARE @AccountName VARCHAR(MAX)

    DECLARE PV_CURSOR CURSOR
    FOR
        SELECT  GL_Account,WholeFamily 
        FROM    ACCOUNT_DETAIL
        WHERE PaidTo=@PaidTO

        OPEN PV_CURSOR
        FETCH NEXT FROM PV_CURSOR
        INTO @GLAccount,@AccountName

现在我被困在如何继续前进。对不起我的无知。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

我不会在这种情况下使用光标...

如果我理解你的建议是正确的,那么当Whole_family为1时,你需要从同一结果集中的另一个表中提取所有信息。根据您在Account_master中的条目,以下查询可以为每个GL_Account分配多行。

SELECT PAIDTO
    , GL_ACCOUNT
    , WHOLEFAMILY
    , ACCOUNTNUMBER
    , ENGLISHNAME
FROM ACCOUNT_DETAIL
LEFT JOIN ACCOUNT_MASTER
    ON CASE 
            WHEN WHOLEFAMILY = 1
                THEN ACCOUNT_DETAIL.GL_ACCOUNT
            ELSE NULL
            END = ACCOUNT_MASTER.ACCOUNTNUMBER