Повторное использование оператора SQL в PeopleCode для таблицы подсказок

У меня есть страница в PeopleSoft с рядом подобных полей. В каждом из них используется таблица подсказок, настроенная на динамическое представление. Когда одно поле изменяется, оно заполняет свойство SQLText двух других полей, включая только что выбранное значение. Поскольку этот оператор SQL каждый раз практически один и тот же, я надеялся, что смогу сделать что-то вроде этого:

/* UM_SUBPLAN_SQL contains something to the effect of:
   SELECT DISTINCT a.acad_sub_plan 
      , a.descr 
   FROM ps_acad_subpln_tbl a 
   WHERE a.institution =:1 
      AND a.acad_plan =:2 
*/
&loSQL = GetSQL(SQL.UM_SUBPLAN_SQLTEXT, "UMS04", "ENT-BS");
&lcSQLText = &loSQL.Value;
&loSQL.Close();
RECORD.FIELD.SqlText = &lcSQLText;

К сожалению, свойство SQL.Value возвращает строку, содержащую переменные связывания :1 и :2, а не значения, которые связываются. Есть ли способ получить эту строку с подставленными значениями, за исключением того же типа конкатенации строк, который я пытаюсь уйти отсюда? Спасибо.

Редактировать: Ну, это было не совсем то, что я хотел, но я пошел со следующим. Это работает, хотя немного более многословно, чем я надеялся.

&loSQL = GetSQL(SQL.UM_SUBPLAN_SQLTEXT, "X", "X");
&lcSQLText = Substitute(&loSQL.Value, ":1", "'" | RECORD.FIELD1.Value | "'")
&lcSQLText = Substitute(&lcSQLText, ":2", "'" | RECORD.FIELD2.Value | "'");
&loSQL.Close();

Если у вас есть более чистое решение, я бы хотел его услышать. Спасибо еще раз!

Снова отредактируйте: комментарий Питера ниже позволил мне немного почистить это. Спасибо!

&loSQL = GetSQL(SQL.UM_SUBPLAN_SQLTEXT, "X", "X");
&lcSQLText = ExpandSqlBinds(&loSQL.Value, RECORD.FIELD1.Value, RECORD.FIELD2.Value);
&loSQL.Close();

person SarekOfVulcan    schedule 05.11.2018    source источник
comment
Вы проверили ExpandSqlBinds и ExpandBindVar? Не проверено, но это, кажется, ваш лучший выбор.   -  person Based    schedule 08.11.2018
comment
Знаешь, я видел ExpandSqlBinds, но по какой-то причине мне показалось, что это не то, что я хотел. Теперь, когда вы снова привлекли мое внимание к этому, это действительно кажется более чистым решением, чем призывы Заменителя. Спасибо!   -  person SarekOfVulcan    schedule 10.11.2018
comment
@PeterPaff, вы можете отправить это как ответ, чтобы я мог отдать вам должное?   -  person SarekOfVulcan    schedule 16.11.2018


Ответы (1)


Попробуйте ExpandSqlBinds и ExpandBindVar.

person Based    schedule 19.11.2018