String 转换字符串以用作Oracle中的列名

String 转换字符串以用作Oracle中的列名,string,oracle,String,Oracle,我想使用“将列名转换为字符串”或“将列名转换为字符串”。我在名为Unica(IBM Experience One)的EMM套件中运行查询时需要它 我有一个字符串,即“CL_CREDIT_LIMIT”,我需要在查询中将其用作填充表(使用CASE)的字符串,还需要用作列名。两者都在同一个查询中 更具体地说,我将此值传递给宏(在Unica中),但只传递一次(作为字符串(带“”)或列名)。所以我只需要一种方法将它们相互转换,不管是哪一个转换成哪一个,最好是将列名转换成字符串 我想知道是否有一个在我看来,

我想使用“将列名转换为字符串”或“将列名转换为字符串”。我在名为Unica(IBM Experience One)的EMM套件中运行查询时需要它

我有一个字符串,即“CL_CREDIT_LIMIT”,我需要在查询中将其用作填充表(使用CASE)的字符串,还需要用作列名。两者都在同一个查询中

更具体地说,我将此值传递给宏(在Unica中),但只传递一次(作为字符串(带“”)或列名)。所以我只需要一种方法将它们相互转换,不管是哪一个转换成哪一个,最好是将列名转换成字符串


我想知道是否有一个

在我看来,您需要动态构建一个查询,然后执行它。也许以下内容会给你一些想法:

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语句,在该语句中,变量的内容被视为列名?如果是这样,那就行不通了。你可能想调查一下。祝你好运。谢谢你阅读我的问题鲍勃。这是一个Oracle+Unica的问题,我有。我是这样说的,也许这说明了一点:我有一个向它传递参数(或令牌)的查询。此参数是一个表名,我可以为其选择类型。如果我把它设为none(这是一个Unica对象),查询将把它当作一个名称,就像列名一样(不带“”),它可以用在“从我的表中选择MyParameter”这样的语句中。在同一个查询中,我想用MyPramater作为字符串,比如:“从Y中选择X,其中列名称='MyParameter'”所以我只能将参数作为String或None传递,并且我需要将它同时作为String和None传递,所以我需要将它从String转换为None,或者从None转换为String。