SQL里有怎樣實現"宏代換"﹗例如字段 A01 A02 A03 A04 用變量循環來為字段設初值。。(50分)

L

lzm

Unregistered / Unconfirmed
GUEST, unregistred user!
各位﹕
在SQL的存儲過程怎樣實現"宏代換"? 即把一個字串值換成某個表中的字段名稱。
例如字段 A01 A02 A03 A04 我用變量循環來為字段設初值。。。
怎樣寫呢﹗ 請指教﹗
 
用一個變量
xsql:=xsql+...
 
OPEN CUR_TEMP1
FETCH NEXT FROM CUR_TEMP1
SELECT @I=1
WHILE (@@FETCH_STATUS=0)
BEGIN
UPDATE KQBZ SET ('A'+@I)=BC01 WHERE XUHAO=@I
FETCH NEXT FROM CUR_TEMP1
END
FETCH NEXT FROM CUR_KQBZ_DP INTO @CODEA,@PART01
END
CLOSE CUR_TEMP1
DEALLOCATE CUR_TEMP1
---------------------------------------------------------------------------
UPDATE KQBZ SET ('A'+@I)=BC01 WHERE XUHAO=@I ---就這一句通
@I為循環變量﹐產生如1 2 3 4 而組合字串為A1 A2 A3 A4 是一個字串
怎樣在語句里把它換字段名稱。
 
如果是ORACLE可以用动态SQL!如:
DECLARE
v_SQLString VARCHAR2(100)
BEGIN
v_SQLString := 'SELECT * FROM AAA'
DoIt(v_SQLString)
END;
 
各位﹕
這個問題太難還是太簡單?怎么不見高人回答﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗
 
SQL里是没有宏替换的,而且不能动态执行SQL语句。就别操这个心了。
 
TO:marknew
那您在遇到這種情況時怎樣處理的呢?
 
比如你正常的SQL是这样写的:
sql.text:='select a01,a02,a03 from t1';
如果要用变量来代替其中的a01,a02,a03,那么可以这样写:
sql.text:='select ' + edit1.text + ',' + edit2.text + ',' + edit3.text + ' from t1';
字段名称从edit.text中获得,但是要求必须要输入正确,否则会报SQL错误。
 
多人接受答案了。
 
顶部