這聽起來像你對我需要動態地生成一個查詢,然後執行它。也許下面會給你一些想法:
DECLARE
strQuery VARCHAR2(32767);
strColumn_name VARCHAR2(100) := 'CL_CREDIT_LIMIT';
cCursor SYS_REFCURSOR;
nColumn_value NUMBER;
strVal2 VARCHAR2(32767);
dtVal3 DATE;
BEGIN
strQuery := 'SELECT ' || strColumn_name || ', FIELD2, FIELD3 ' ||
'FROM SOME_TABLE ' ||
'WHERE ' || strColumn_name || ' > 10000';
OPEN cCursor FOR strQuery;
LOOP
FETCH cCursor
INTO nColumn_value, strVal2, dtVal3;
EXIT WHEN cCursor%NOTFOUND;
-- Do something with the fetched values - for example...
DBMS_OUTPUT.PUT_LINE(strColumn_name || '=' || nColumn_value ||
' FIELD2=''' || strVal2 || '''' ||
' FIELD3=' || TO_CHAR(dtVal3, 'DD-MON-YYYY'));
EXECUTE IMMEDIATE 'UPDATE SOME_OTHER_TABLE ' ||
'SET SOME_COLUMN = ' ||
'CASE '
'WHEN ' || strColumn_name || ' = ''CL_CREDIT_LIMIT'' THEN 123 ' ||
'WHEN ' || strColumn_name || ' = ''CL_OTHER'' THEN 456 ' ||
'ELSE 789 '
'END '
'WHEN KEY_COLUMN = ''SOMETHING OR OTHER''';
END LOOP;
CLOSE cCursor;
END;
分享和享受。
請編輯你的問題並解釋你想要做的事情。作爲問題的立場,我不清楚你的意圖。您是否試圖將一個字符串變量傳遞給一個SQL語句,其中該變量的內容被視爲一個列名稱?如果是這樣,那是行不通的。您可能想要調查[如何在PL/SQL中使用動態SQL](http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/dynamic.htm#LNPLS011)。祝你好運。 –
感謝您閱讀我的問題鮑勃。這是我擁有的Oracle + Unica問題。 我這樣說,也許它說得很清楚: 我有一個參數(或令牌)傳遞給它的查詢。這個參數是我可以選擇一個類型的表名。如果我把它設置爲none(這是一個Unica事物),並且查詢會將它視爲一個名稱,如列名稱(不帶''),並且可以用於像「SELECT MyParamater FROM MY_TABLE」這樣的語句中。 – Fortysixand2
在同一個查詢中,我想使用MyPramater作爲字符串,如下所示:「SELECT X FROM Y WHERE COLUMN_NAME ='MyParameter'」所以我只能將參數作爲String或None傳遞,因此我需要將它作爲兩個參數來使用,所以我需要將其從字符串轉換爲無或從無轉換爲string.it無關緊要。 – Fortysixand2