PL/SQL interpolation

4 отговора 135 прегледа
#1

PL/SQL interpolation

Здравейте, имам следният въпрос:
имам заявката:

select warehouseName from wrh

която ми връща резултат, но името на колоната се казва warehouseName
Искам това да го променя и да си ми връща нещо по-user friendly
Имам функция GetCurrWrhName, която ми връща резултат от тип VARCHAR2 и искам резултатът от тази функция да ми бъде ИМЕ на колоната
тоест да се интерполира функцията. Правя това:

select warehouseName package_name.GetCurrWrhName from wrh

но ми дава грешка ORA-00923 - From keyword not found where expected

select warehouseName as package_name.GetCurrWrhName from wrh
ми връща същото

Как да го направя така, че името на колоната да ми бъде върнатия от функцията стринг ?

Отговор
в отговор на legato #2

Re: PL/SQL interpolation

щом си го пробвал в статичен SQL и не може, явно не може

а ако си толкова на зор, има Native Dynamic SQL и DBMS_SQL - ползвай което ти душа желае

Отговор
в отговор на legato #3

Re: PL/SQL interpolation

e tova nqma li da ti svyrshi rabota:
select package_name.GetCurrWrhName(warehouseName) from wrh

Kakyv e smisyla da go slagash tova ime kato alias?
Ako ti trqbva i imeto otdelno, togava napravi taka:
select warehouseName, package_name.GetCurrWrhName(warehouseName) from wrh

Отговор
в отговор на legato #4

Re: PL/SQL interpolation

До колкото успях да разбера, ти искаш да изведеш като резултат, някое по-разбираемо име на колоната warehouseName, което име ти се връща от функцията package_name.GetCurrWrhName. В такъв случай отговорът, според мен, е точно DYNAMIC SQL.

Примерно, тъй като не знам от къде я изпъняваш заявката, ще дам примера с PL/SQL:

l_string := ' select warehouseName as ' || package_name.GetCurrWrhName || ' from wrh ';
execute immediate l_string;

Или нещо такова , с което да можеш предварително да вземеш името на колоната което искаш да се вижда!

Защо да правим нещата лесно...
Отговор
в отговор на svircho #5

Re: PL/SQL interpolation

Greshno sym razbral vyprosa, tak che otmenqm predishniq si post

Отговор