The component which will play a key role here is function .If you have a specific requirement which cant be fulfilled via any of the available function, then you need to write your own one and then refer that in the declare expression.
As Santanu Bhattacherjee suggested you may need to write a RUF , but if you are not good with java or custom code then you can create a DPage (with source as activity to retrieve the itemdesc) with ItemCode as parameter and refer it in the Declare Expression with change tracking as whenever used if no value present.
I am not sure whether this is the best way to do it.
Linked Property could be a good fit for this type of requirement provided the database table having ItemCode and itemName is mapped to a class in Pega. This eliminates need of writing any activity/RUF.