please help me convert this part into SQL Server.

  • IF OUT_PAT_VISIT_ID_V = 'Collected' and NO_OUT_PAT_VISIT_ID_V = 'Collected' THEN

    :NEW.PAT_VISIT_ID := 'Collected';

    ELSIF OUT_PAT_VISIT_ID_V = 'Collected' THEN

    :NEW.PAT_VISIT_ID := NO_OUT_PAT_VISIT_ID_V;

    ELSIF NO_OUT_PAT_VISIT_ID_V = 'Collected' THEN

    :NEW.PAT_VISIT_ID := OUT_PAT_VISIT_ID_V;

    ELSE

    IF OUT_PAT_VISIT_START_DTTM_V > NO_OUT_PAT_VISIT_START_DTTM_V THEN

    :NEW.PAT_VISIT_ID := OUT_PAT_VISIT_ID_V;

    ELSE

    :NEW.PAT_VISIT_ID := NO_OUT_PAT_VISIT_ID_V;

    END IF;

    END IF;

    END IF;

  • It's hard to provide a translation without the rest of the code, and I don't believe blindly translating it for you would benefit you at all.

    I can give you some clues though.

    Those :parameters would be defined in the rest of the code you haven't supplied, probably as part of a stored procedure or a function.

    IF-THEN-ELSE works almost the same in T-SQL. Read up on control-flow in T-SQL.

    When you say convert to SQL Server, are you porting your database from Oracle to SQL server? If yes then you will need to define the stored procedure with input and output parameters. I suggest reading an intro to T-SQL stored procedures on MSDN. If you are familiar with PL/SQL then it will be very easy for you. If you're not then I suggest you are way out of your depth and asking for straight transliterations on a forum is a bad idea. Note I didn't say translation, because without context you can't translate any language into another language.

  • use select case for this issue.

  • From the syntax, I'm going to assume that this code is part of a trigger where you're referencing OLD AS OLD and NEW AS NEW and that it's a FOR EACH ROW. If this assumption is incorrect, you can completely ignore the rest of this post. It's been a while since I worked in Oracle.

    The :NEW is a pseudo-row that refers to the row being inserted. SQL Server has the INSERTED keyword to refer to the same thing. Also, you're going to want to remove the THEN and END IF lines. Replace the ELSIF with ELSE IF statements. The last thing I see is to replace Oracle's := assignment syntax with a simple = instead.

    BEGIN...END blocking is required if you have multiple statements being executed in a decision structure.

Viewing 4 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic. Login to reply