Domanda

Sto scrivendo una stored procedure e all'interno di questa procedura che sto usando IsNull. Se il valore è nullo Voglio usare una dichiarazione prescelta come il valore di sostituzione è anche possibile?

IF ISNULL(@v_FilePrefix, (SELECT @v_FilePrefix = TransactionTypePrefix 
                            FROM [ConfigTransactionType] 
                           WHERE TransactionTypeID = @TransactionTypeID));
È stato utile?

Soluzione

È possibile utilizzare questo:

IF @v_FilePrefix IS NULL
BEGIN

    SELECT @v_FilePrefix = TransactionTypePrefix
    FROM [ConfigTransactionType]
    WHERE TransactionTypeID = @TransactionTypeID

END

Credo che questo è ciò che stai dopo?

Altri suggerimenti

Supponendo che il @TransactionTypeID restituirà sempre un valore:

SELECT @v_FilePrefix = COALESCE(@v_FilePrefix, TransactionTypePrefix)
  FROM [ConfigTransactionType] 
 WHERE TransactionTypeID = @TransactionTypeID

COALESCE restituisce il primo valore non nullo. Se @v_FilePrefix non è nullo, sarà sufficiente impostare il valore a se stesso.

Ma sarebbe meglio usare:

IF @v_FilePrefix IS NULL
BEGIN

   SELECT @v_FilePrefix = TransactionTypePrefix
     FROM [ConfigTransactionType]
    WHERE TransactionTypeID = @TransactionTypeID

END
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top