views:

294

answers:

2

Hello, I created a UDF that I am using to generate a default value for a column. It works great, but I want to pass another field as a parameter into the function. Is this possible?

For example, one of the fields is a DealerID field, and I want to pass in the value of the DealerID field into my UDF because I will use it to calculate the new value. Any help would be appreciated!

A: 

Please correct me if you have a specific reason why you need to use a UDF, but why not just define the default value for the column in your table DDL, which will then be overwritten if you supply a specific value in your UPDATE, INSERT etc.? Using a UDF in a SELECT will cause the function to be executed every row, an overhead you will save if it is taken care of at the table definition level.

davek
I am trying to do a formula to calculate the default value, which is why I am trying to use a UDF.
Mike C.
+2  A: 

No, because the default value will be needed before DealerID is known (eg on INSERT)

Edit:

This means that SQL Server does not the value in the table at the time of insert, only after. Therefore, it can not a UDF for the default.

For example, what about a multiple row insert, or where you have NEWID() default?

Now, using logic basic on DealerID: if it's GUID, why? It's an internal, non-user readable value.

If you really need this, you'll have to use a computed column for the "base" value and another column for the "actual" value with ISNULL.

gbn
I think I would want to do it with a trigger, i don't know how, any suggestions?
Shimmy