נניח שאנחנו קולטים נתונים ממסך בו צריך להזין ערך מספרי, אך לעיתים נכתבת שם נוסחה. למשל- מישהו כותב 2011-1960 במקום את גילו (51), או אולי 120*1.165 כדי לציין ערך כולל מע"מ וכו'; ואת הערך הזה יש לתרגם לערך מספרי.
מתימטית זו אינה בעייה קשה במיוחד, אבל אם יש לנו משתנה טקסטואלי שתוכנו הוא חישובי, כיצד נחלץ ממנו את התוצאה למשתנה אחר?
אפשר להשתמש למשל בפרוצדורה SP_ExecuteSQL שמאפשרת להריץ קוד דינאמי, ואת התוצאה להפנות למשתנה (הבעייה כאן היא לחלץ את מה שרץ בחלק הדינאמי אל מחוץ לחלק הדינאמי – פעולה שאינה ברורה מאליה):
Declare @S NVarchar(Max);
Set @S=N'2011-1960';
Declare @N Float;
Set @S=N'Select @N='+@S;
Exec SP_ExecuteSQL @Query=@S,
@Params=N'@N Float Output',
@N=@N Output;
Print @N;
מה קורה אם מדובר בטבלה בה יש עמודת טקסט עם חישובים?
ניצור לדוגמה טבלה זמנית עם שתי שורות כאלו:
Create Table #T(ID Int Identity,
S Varchar(Max));
Insert
Into #T
Select '6/2*3'
Union All
Select '1+1';
וכעת נשלוף את נתוני הטבלה באופן דינאמי:
Declare @S Varchar(Max);
Select @S=Isnull(@S+Char(13)+'Union All'+Char(13),'')
+'Select'+Char(9)+Cast(ID As Varchar)+' ID,'
+Char(13)+Char(9)+Char(9)+''''+S+''' S,'
+Char(13)+Char(9)+Char(9)+S+' N'
From #T;
Print @S;
Exec(@S);