Boost Function problem in Studio 12.2

Hi,
I'm having a problem compiling a simple boost::function declaration which worked fine with 12.1 (and gcc). Here's the test code:
#include <boost/function.hpp>
#include <string>
int main(int argc, char* argv[])
boost::function<void(std::string)> foo;
Which produces the error:
"boostfn.cc", line 7: Error: In this declaration "foo" is of an incomplete type "boost::function<void>".
1 Error(s) detected.
Compiler version:
CC: Sun C++ 5.11 SunOS_i386 2010/08/13
Boost version: 1.38.0.
Command line:
CC -g0 -DSOLARIS -features=tmplife -features=tmplrefstatic -erroff=wbadinitl,wbadasgl -library=stlport4 -I<path to boost> boostfn.cc
Any ideas why this doesn't work?
Thanks,
Graham

Thanks Steve, I see. So is there a list of such known issues? I didn't notice anything related to it in the Known Problems section of the docs (http://docs.sun.com/app/docs/doc/821-2414/gkezt?a=view). It's a shame, because this put us in a position where we need to upgrade to 12.2 due to a bug in 12.1, but this regression means we can't use 12.2.
Cheers,
Graham

Similar Messages

  • [Resolved] Compilation issues involving boost::function and GCC

    Resolution: It seems that GCC does not like anonymous structs defined inside of functions being passed as the arguments. So in order to make it compile and such for the time being, I simply defined the structs at the top of the file and changed the other code accordingly. I hope this helps anyone else who might get stuck on this. Cheers. =]
    I have been having this problem for a while, although I got it to compile by declaring the functor struct with ": function<void (Player *)>" after it. However, this only got it to compile rather than actually work. So I am hoping that someone here might have a possible solution for the problem. Now onto the code and such.
    if (command == "me") {
    if (args.length() == 0)
    return;
    string msg = player->getName() + " : " + args;
    struct {
    void operator()(Player *gmplayer) {
    if (gmplayer->isGM() == true) {
    PlayerPacket::showMessage(gmplayer, msg, 6);
    string msg;
    } sendMessage = {msg};
    Players::Instance()->run(sendMessage);
    The errors:
    GCC wrote:ChannelServer/ChatHandler.cpp||In function 'void ChatHandler::handleChat(Player*, PacketReader&)':
    ChannelServer/ChatHandler.cpp|163|error: no matching function for call to 'Players::run(ChatHandler::handleChat(Player*, PacketReader&)::<anonymous struct>&)'
    ChannelServer/Players.h|47|note: candidates are: void Players::run(boost::function<void ()(Player*)>)
    If it helps, this is the declaration of the Players::run function.
    void run(function<void (Player *)> func);
    Thanks in advance for any help you all can give. Cheers. =]
    Last edited by emily (2008-12-24 22:05:58)

    Good thing you found a solution.
    I've had similiar problems from time to time.
    One of the few part of C++ I don't like... Include .h here and there, forward declarations etc, becomes a mess after a while if you've got lots of files.

  • Signal Booster Causing Problems

    Can someone out there explain how the following can happen. After initially receiving FIOS for HDTV, I was experiencing no audio,video or functionality problems. Suddenly I was unable to connect to the server for PPV or use the select function to browse. "Server not available" was the screen message. A FIOS tech assessed that weak signal was causing the router to not stay current with the guide and also prevented server connectivity. He replaced the router and installed a Motorola signal booster which not only solved the problem but increased my internet speed and picture quality . However, after he left I discovered HD channels 900 and up and 750 were not viewable. "Not Available" was the screen message. How can the signal booster selectively prevent receiving certain channels. A FIOS tech is coming back today as all efforts by the office to re-boot and send authorization codes and tests failed. HELP!!!!
    Message Edited by generet on 09-17-2008 01:25 PM
    Message Edited by generet on 09-17-2008 01:29 PM
    Solved!
    Go to Solution.

    A happy ending. Two FIOS techs arrived and replaced a 15 foot run of cable from a splitter that I had installed (signal loss), and reduced signal strenghth to the router as it was too hot with the PDI MOCA power booster. Somehow this combination solved both the failure to be able to connect to the server, and reinststed channels over 900. Go fugure. The logic of needing both a booster and a reducer does not compute.  

  • Calling CVI DLL Function from Visual Studio

    HI all ,
    Iv'e created a DLL using CVI and i'm tring to call one of it's function from visual studio 6.0
    I'm getting a general error , is there a specific prototype that i need to set my functions in ordrer to call them ?!  
    Kobi Kalif
    Software Engineer

    You will need to distribute the CVI RTE along with your DLL, since anything you write in CVI is going to use the RTE.
    As far as calling the DLL functions, you can use the CVI defined macros
    <return type> DLLEXPORT DLLSTDCALL <function name> (<param1 type> <param1> ...) {
    to declare your functions in the DLL for access by a VS application.
    for example
    int DLLEXPORT DLLSTDCALL myfunction (int funparam1, double func param2) {
    There are options for identifying which functions to export from your DLL, I use "functions marked for export" but there are other choices available.  I also include a type library so when you type the name of a DLL funciton in VS6 you see a balloon popup with the function signature.  This is a check box in the target settings.  You have to create a ".fp" file (function panel file) to collect the function info for the library.
    From VB6 you can access the DLL a couple of ways, but I usually add the DLL as a reference.

  • Has anyone had a problem with TapMedia File Manage on iPhone 5. I reported a WIFI functionality problem to the developer and asked for support. Instead they have been very unprofessional by name calling me instead of logically evaluate and troubleshoot th

    Has anyone had a problem with TapMedia File Manage installed on iPhone 5? I reported a WIFI functionality problem to the developer and asked for support. Instead the company has been very unprofessional by name calling me instead of logically evaluate and troubleshoot the problem

    Hi AKE1919,
    Welcome to the Support Communities!
    The following information should help you with this:
    How to report an issue with your iTunes Store, App Store, Mac App Store, or iBookstore purchase
    http://support.apple.com/kb/HT1933?viewlocale=en_US
    Cheers,
    Judy

  • Substring Function in Design Studio

    Hello all,
    I have a question. Is there any substring like function in Design Studio because I have a string and I need to cut the part of the string on the dashboard to show.
    For Example
    My String: HELLO
    I only want to get "EL" from that string and show that on the dashboard.
    Is that possible?
    I appreciate your help in advanced. Thanks.

    Zahid,
    As Tammy mentioned Help document has it all.
    You can find it in Help of Design Studio application itself.

  • How to enable Comment functionality in Design Studio

    Hi Experts,
    How can we enable comment functionality in Design studio? This is important for users:
    a) To enter comments in the application
    b) To see the comments after reopening the application again. This means, it needs to be stored somewhere.
    This application is built on top of a BEx Query.
    Really appreciate your help here!!
    Thanks,
    Jomy

    Hi Jomy - I see your point
    Looking at Figure 7 here Lumira and Design Studio Updates Roadmap from ASUG Annual Conference - Part 2 it is not going to be built in Design Studio
    So my opinion only here -  either you buy CubeServ add-on or you build SDK yourself.  As an accountant I would do cost-benefit - how long (cost) would it take for someone other than CubeServ to do it versus buying from CubeServ.
    Maybe others have ideas?

  • Common SAP MM Functional problems

    Fellows
    Is there anyone who can explain some common SAP MM daily functional problems. im junior consultant and want to be prepared for interviews. you may just state them in point form briefly.
    thanks
    rash

    Common Issue
    1)Vendor is not created for Purchasing Organisation XXXX.
    2)Though Vendor Master is Flag for Deletion ,Vendor is shows at the time of PO Creation.
    3)How to extend the materials for another storage location
    4)How to Create the PO for Different Currencies.
    5)While Posting The Doc . Error Occure,1) Account Determination for Entry 1000 BSV _ _ not Posssible.2)  Account Determination for Entry 1000 FRL _ _ not Posssible.
    6)Not Authorisation for Movt Type ......,Transaction Code......
    7) Account Determenation for transaction ....  Cost center ...does not maintain.
    8)While Creation of GR -Authorisation missing for Company Code 0000 Asset Class XXXX,
    9)While Removing The Stock of material by Cancelling the Goods Receipt Doc.Error occur that Stock Qty difficial by xx No.
    10)While GR Cancellation error occure that document does not contain any selected item.
    11)While Creating Service Entry Sheet Error occured that Qty entered  exceeded by Qty in PO
    12)While cancelling the matl.Doc Error occure that matl is deficit of sales ordr stock.
    13) Error-Tax code does not Exist while creating Miro
    14)TDS Amount is not Captured at Miro entry.
    15)While Miro error occure that No suitable item found for Purchase Order.
    16)User ID gets Blocked due to wrong Password entered more than 3 times.
    18)Error-Gl account does not created for Chart of account XXXX while Miro
    19)In Purchase Order Service tax is 12.24 % and at Bill service tax is 10.5 .How to adjust it and How to cancell Wrong Miro
    20)Stock Statement not matched Value still lying into Stock A/c
    Rewards if Helpful...
    Regards
    Sanjay L

  • Using boost::thread with Sun Studio C++ gives error

    Hi,
    I'm trying to compile a code which uses the boost thread library, but I get the following error:
    CC -library=stlport4 -features=tmplife -features=tmplrefstatic -mt -c -o t t.cpp
    "/opt/boost/include/boost/thread/pthread/mutex.hpp", line 142: Error: The function "pthread_mutex_timedlock" must have a prototype.
    "/opt/boost/include/boost/thread/pthread/mutex.hpp", line 142: Error: The function "pthread_mutex_timedlock" must have a prototype.
    "/opt/boost/include/boost/thread/detail/thread.hpp", line 344: Error: boost::thread::thread(boost::thread&) is not accessible from boost::move(boost::detail::thread_move_t<boost::thread>).
    "/opt/boost/include/boost/thread/pthread/recursive_mutex.hpp", line 179: Error: The function "pthread_mutex_timedlock" must have a prototype.
    "/opt/boost/include/boost/thread/pthread/recursive_mutex.hpp", line 179: Error: The function "pthread_mutex_timedlock" must have a prototype.
    5 Error(s) detected.
    make: *** [t] Error 5the sample source code in question here just a single include:
    #include <boost/thread.hpp>This is with boost 1.40.0. I wonder what I'm doing wrong..
    Akos

    OK, I tried latest version of CC from Sun Studio 12 update 1 and can say that
    - the error about constructor not being accessible is Sun C++ compiler "feature" (only called feature because it existed for so long) that allows binding of rvalues to non-const references; this "feature" will probably be turned off in the next release. It can't be changed in a patch because client's code might rely on it.
    - the other errors are also not Boost-specific: the result of incompatibility of Linux headers and Sun C++ compiler; more thorough investigation is due, but in the past we had several problems like this. This particular can be solved by adding
    -D_GNU_SOURCE to compile line.

  • Volunteer needed to help debug a Boost library in Sun Studio

    Hello,
    I've recently added a new Boost library called Boost.Flyweight to this project's
    internal repository
    [http://svn.boost.org/svn/boost/trunk/libs/flyweight/doc/index.html]
    and found out that Sun Studio (versions 5.7 thru 5.9) have runtime problems with
    a particular library test, as described in
    [http://lists.boost.org/boost-testing/2008/12/6048.php]
    My requests for help at the Boost mailing lists have met no response, so I'm
    looking here for volunteers to help debug this problem. Basically I need someone
    with access to Sun Studio and some C++ fluency (and familiarity with
    Boost is a plus, too). I'd be trying to provide as much support as possible
    during the process. In return the kind volunteer will receive my eternal gratitude
    and an entry in the lib's acknowledgements section.
    If you're interested please drop me an email to joaquin at tid.es
    Thank you very much,
    Joaquín M López Muñoz
    Telefónica, Investigación y Desarrollo

    The problem has been identified as a compiler bug, and bug number 6782987 has been filed for it.
    The bug report will be visible at bugs.sun.com in a day or two.
    Compiler versions earlier than 5.9 (Sun Studio 12) are not very good a compiling BOOST, but this particular bug exists in the latest development compiler. One of our engineers is looking for a workaround, and he will post something here if he finds one.
    A fix for this bug should show up in a future patch to Sun Studio 12. If you have a service contract with Sun, you can escalate this bug for faster service, and get a pre-release version of the compiler patch.

  • Installation Problem Visual Studio Express 2013 for Web on Windows 8.1

    Hi,
    I am new to Microsoft developing tools and I have spent the last two days trying to install VS Express 2013 for Web on my laptop that's running windows 8.1 (X64,Intel
    Core i5 3337U (1.80GHz)).
     I run it as an administrator and have enough space on the disk. However, I keep on getting the same error. 
    Microsoft Visual Studio Express 2013 for Web - ENU Fatal error during installation.
    After uninstalling and deleting the temp files, I get an additional error.
    Entity Framework 6.1.1 Tools for Visual Studio 2013
    User cancelled installation.
    In my log files here are some of the problems that I saw:
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\DevDiv\WebFrameworksTools\Servicing\5.0\VisualStudio12'; variable = 'AspNetWebFxTools_VS2013_Version'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\DevDiv\WebFrameworksTools\Servicing\5.0\VWDExpress12'; variable = 'AspNetWebFxTools_VWD2013_Version'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Classes\Installer\Dependencies\Microsoft.VS.Bliss_Core,v12'; variable = 'bliss_core_DetectKeyExists'
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'bliss_core_DetectKeyExists' to value 0
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot'; variable = 'DisableRootAutoUpdate'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft Corporation\DataFxTools\12.0.0.0'; variable = 'EFTools_2013_VersionKey'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Help\v2.1\Setup'; variable = 'help3vs_49_DetectKey'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Help\v2.1\Setup'; variable = 'help3vs_49_DetectKeyExists'
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'help3vs_49_DetectKeyExists' to value 0
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'IEsvcVersionExists' to value 1
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'IEsvcVersion' to value '11.0.9600.17631'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\SystemCertificates\AuthRoot\Certificates\3B1EFD3A66EA28B16697394703A72CA340A05BD5'; variable = 'MicrosoftRootCertificateAuthority2010AuthRootExists'
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'MicrosoftRootCertificateAuthority2010AuthRootExists' to value 0
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'MicrosoftRootCertificateAuthority2010RootExists' to value 1
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\SystemCertificates\AuthRoot\Certificates\8F43288AD272F3103B6FB1428485EA3014C0BCFE'; variable = 'MicrosoftRootCertificateAuthority2011AuthRootExists'
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'MicrosoftRootCertificateAuthority2011AuthRootExists' to value 0
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'MicrosoftRootCertificateAuthority2011RootExists' to value 1
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'netfxfullredist_43_CBSValue' to value '1'
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'netfxfullredist_43_DetectKey' to value '4.5.51641'
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'NetFxFullRedist_InstalledRelease' to value '378675'
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'NetFxFullRedist_InstalledReleaseExists' to value 1
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'OS_BuildNumber' to value '9600'
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'ssceruntime_x64_msi_DetectKey' to value '4.0.8876.1'
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'ssceruntime_x64_msi_DetectKeyExists' to value 1
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'ssceruntime_x86_msi_DetectKey' to value '4.0.8876.1'
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'ssceruntime_x86_msi_DetectKeyExists' to value 1
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\SSDT\12.0\1033'; variable = 'ssdt_lang_detect_enu'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\DevDiv\vs\Servicing\12.0\teamExplorerCore'; variable = 'teamExplorercore_DetectKeyExists'
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'teamExplorercore_DetectKeyExists' to value 0
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'VSComponentPathVariable' to value ''
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Updates\Microsoft Visual Studio 2013\vsupdate_kb2829760'; variable = 'vsupdate_DetectKey'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Updates\Microsoft Visual Studio 2013\vsupdate_kb2829760'; variable = 'vsupdate_DetectKeyExists'
    [0354:1418][2015-02-23T13:55:12]i000: Setting numeric variable 'vsupdate_DetectKeyExists' to value 0
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'webdeploy_x64_en_usmsi_902_DetectKey' to value '9.0.1764.0'
    [0354:1418][2015-02-23T13:55:12]i000: Setting string variable 'webdeploy_x86_en_usmsi_901_DetectKey' to value '9.0.1764.0'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Web Tools\Visual Studio 12'; variable = 'WebTools_VS2013_VersionKey'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Web Tools\Visual Studio 2013'; variable = 'WebTools_VS2013_VersionKey_2'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Web Tools\Visual Studio Express 12 for Web'; variable = 'WebTools_VWD2013_VersionKey'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\Web Tools\Visual Studio Express 2013 for Web'; variable = 'WebTools_VWD2013_VersionKey_2'
    The last line of my log file contained this:
    [0354:1418][2015-02-23T14:02:26]i399: Apply complete, result: 0x80070643, restart: None, ba requested restart:  No
    I really need to have this up and running as soon as possible. Any help would be greatly appreciated. 
    Thanks!

    Hi,
    By the errors:
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\DevDiv\WebFrameworksTools\Servicing\5.0\VisualStudio12'; variable = 'AspNetWebFxTools_VS2013_Version'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Microsoft\DevDiv\WebFrameworksTools\Servicing\5.0\VWDExpress12'; variable = 'AspNetWebFxTools_VWD2013_Version'
    [0354:1418][2015-02-23T13:55:12]i000: Registry key not found. Key = 'SOFTWARE\Classes\Installer\Dependencies\Microsoft.VS.Bliss_Core,v12'; variable = 'bliss_core_DetectKeyExists'
    It maybe a registry or administrator issue.
    Please install VS with administrator.
    What's more, it maybe a corrupt registry issue. And you can't install any version of Visual Studio, I think you can use the tool to fix problems that programs cannot be installed or uninstalled. It also can fix the corrupted registry keys.
    http://support.microsoft.com/mats/program_install_and_uninstall/en-us
    Best Wishes!
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. <br/> Click <a
    href="http://support.microsoft.com/common/survey.aspx?showpage=1&scid=sw%3Ben%3B3559&theme=tech"> HERE</a> to participate the survey.

  • Filter Function problems on ALV report. [Resolved]

    Hi,
    I developed an ALV report by using function as below:
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
             EXPORTING
                  I_CALLBACK_PROGRAM = G_REPID
    *            I_CALLBACK_PF_STATUS_SET = status_set
    *            I_CALLBACK_USER_COMMAND  = USER_COMMAND
                  I_STRUCTURE_NAME = 'T_BSIK'
                  IS_LAYOUT        = GS_LAYOUT
                  IT_FIELDCAT      = GT_FIELDCAT[]
             TABLES
                  T_OUTTAB    = TAB_BSIK.
    And this ALV custom report is referenced from standard function FBL5N.
    After i completed this report, i made an comparision of FBL5N and my custom report.
    When I apply the filter function, for example, on the document type, I cannot input 2 characters in the document type field under the filter function. The field length is only 1 character. Similar case results on the field document date.
    While the standard function FBL5N works very nice.
    What should i do to make the filter function of my own ALV report as the same as the standard function FBL5N do?
    Thanks in advance.
    Lala
    Message was edited by:
            Hoo lala

    Oh, i found where the problem is...
    add below 2 statements, then the question is resolved.
      LS_FIELDCAT-ref_fieldname = ****
      LS_FIELDCAT-ref_tabname = ***
    FORM FIELDCAT_INIT tables RT_FIELDCAT.
    CLEAR LS_FIELDCAT.
      LS_FIELDCAT-COL_POS   =  3.
      LS_FIELDCAT-FIELDNAME = 'BLART'.
      LS_FIELDCAT-TABNAME   = 'TAB_BSIK'.
      LS_FIELDCAT-SELTEXT_L = 'Document Type'.
      LS_FIELDCAT-ref_fieldname = 'BLART'.
      LS_FIELDCAT-ref_tabname = 'BSIK'.
      APPEND LS_FIELDCAT TO  RT_FIELDCAT.
    endform.
    Fine now.
    Lala

  • I have the "Bookmarks and history system will not be functional" problem and not FireFox will not open at all and my whole computer freezes if I try.

    For a few weeks now, I've been getting the "Bookmarks and history system will not be functional..." message. When I clicked for more information, FireFox would freeze.
    I found a solution about a new places database, but for the past few days I can't get FireFox to open at all. Then my whole system is frozen and I have to turn it off to get it going again, thus losing a lot of unsaved data.
    How can I get FireFox back?

    A possible cause is a problem with the file places.sqlite that stores the bookmarks and the history.
    *http://kb.mozillazine.org/Bookmarks_history_and_toolbar_buttons_not_working_-_Firefox
    *https://support.mozilla.com/kb/The+bookmarks+and+history+system+will+not+be+functional

  • Visual fortran calling a c function in visual studio

    Hi,
    I am running Windows 8.1 with Visual Studio Prof. 2012. I have installed Visual Fortran also. Now I wanted to make a solution with two projects one for Visual Fortran and one for C, and be able to call a C function from within the Fortran. 
    Can someone, please, show how to do this step by step? Guide with pictures would be awesome.
    Thanks in advance.

    Hi Engineer101,
    One way to integrate your code into TestStand would be to save it as a .dll file.  Cick this link for information on how to do this in visual c++ 2008. Once you have the dll, you can call it in teststand using a c/c++ dll action step.  I hope this helps, and let me know if you have any further questions!
    Al B.
    Staff Software Engineer - TestStand
    CTA/CLD

  • View with columns based on function - problem with query

    Hi,
    I'm using Oracle 9i;
    I've created a view which has columns based on a table columns (multiple columns from 1 table) and funtion (multiple columns based on 1 function).
    The function takes ID as the first argument and name of the column to determine which value to return as the second one.
    Here is a sample of such function (simplified):
    FUNCTION my_function
    (in_id IN NUMBER, in_col_name IN VARCHAR2)
    RETURN VARCHAR2
    IS
    c_name VARCHAR2(100);
    c_last_name VARCHAR2(100);
    BEGIN
    SELECT T.NAME, T.LAST_NAME
    INTO c_name, c_last_name
    FROM TABLE_1 T, TABLE_2 Z
    WHERE T.PK = Z.FK
    AND Z.ID = in_id;
    IF in_col_name = 'NAME' THEN
    RETURN c_name;
    ELSIF in_col_name = 'LAST_NAME' THEN
    RETURN c_last_name;
    END IF;
    END;
    For simplicty I've restricted the number of columns.
    CREATE OR REPLACE VIEW my_view
    (ID, NAME, LAST_NAME)
    AS
    SELECT
    T.ID ID
    ,CAST(my_function(T.ID,'NAME') AS VARCHAR2(100)) NAME
    ,CAST(my_function(T.ID,'LAST_NAME') AS VARCHAR2(100)) LAST_NAME
    FROM TABLE T;
    There is no problem with query:
    SELECT * FROM my_view;
    The problem arises when I query the view (regardles of '=' or 'LIKE'):
    SELECT * FROM my_view
    WHERE name LIKE '%some_part_of_name%'
    The query returns rows for same names, for same it doesn't. If I put '=' and the whole name the query returns nothing, but when I put 'LIKE' and the first letter it returns rows in some cases.
    I've tried to debug this situation and I've discovered that the function recives ID not in the proper order and not the same amount of times - in explicit:
    for each ID in (1, 2, 3, 4, 5, 6, ... , 100) the function should be called twice for each ID and in the same order, but it does not.
    I get 1, 1, 2, 3, 3, 6, 20, 20 and so on.
    Help needed.
    Greetings.

    The problem is more complicated than the solutions provided here.
    The reason why I'm using the function is this:
    the original view was constructed using multiple union all selects and the speed was terrible. I've created the index on the base table to obtain a proper sort. For retriving all records at once the view works perfectly, but if one wants to query by columns based on function the results are suprisng - sometimes there are, some times there are none, or if you serch with "like" and only a part of string there are results, but with "=" there are no results.
    Here are real DDLs:
    View:
    CREATE OR REPLACE VIEW V_DOK_ARCH
    (ID_ZDAR, TYP, STAN, DATE_CREATED, CREATED_BY,
    DATE_MODIFIED, MODIFIED_BY, SPRA_ID_SPRA, PODM_ID_PODM, PODM_UMOW_ID_UMOW,
    NR_WFS, WFS_NR_INTER, UWAGI_OPER, FUNDUSZ, NUMER,
    DATA_PODPISANIA, RODZAJ, TYP_PRZY, TYP_UBEZ, NAZWISKO,
    IMIE, IMIE_OJCA, NAZWA_FIRMY, NAZWA_FIRMY_SKR, DANE_KLIE)
    AS
    SELECT /*+ INDEX(Z ZDAR_DATE_CREATED_DESC_I) */
    Z.ID_ZDAR ID_ZDAR
    , Z.TYP TYP
    , Z.STAN STAN
    , Z.DATE_CREATED DATE_CREATED
    , Z.CREATED_BY CREATED_BY
    , Z.DATE_MODIFIED DATE_MODIFIED
    , Z.MODIFIED_BY MODIFIED_BY
    , Z.SPRA_ID_SPRA SPRA_ID_SPRA
    , Z.PODM_ID_PODM PODM_ID_PODM
    , Z.PODM_UMOW_ID_UMOW PODM_UMOW_ID_UMOW
    , Z.NR_WFS NR_WFS
    , Z.WFS_NR_INTER WFS_NR_INTER
    , Z.UWAGI_OPER UWAGI_OPER
    , Z.FUNDUSZ FUNDUSZ
    , CAST(F_Rej_Zdar_Char(Z.ID_ZDAR, 'NUMER') AS VARCHAR2(30)) NUMER
    , F_Rej_Zdar_Date(Z.ID_ZDAR, 'DATA_PODPISANIA') DATA_PODPISANIA
    , CAST(F_Rej_Zdar_Char(Z.ID_ZDAR, 'RODZAJ') AS VARCHAR2(4)) RODZAJ
    , CAST(F_Rej_Zdar_Char(Z.ID_ZDAR, 'TYP_PRZY') AS VARCHAR2(4)) TYP_PRZY
    , CAST(F_Rej_Zdar_Char(Z.ID_ZDAR, 'TYP_UBEZ') AS VARCHAR2(3)) TYP_UBEZ
    , CAST(F_Rej_Zdar_Char(Z.ID_ZDAR, 'NAZWISKO') AS VARCHAR2(30)) NAZWISKO
    , CAST(F_Rej_Zdar_Char(Z.ID_ZDAR, 'IMIE') AS VARCHAR2(30)) IMIE
    , CAST(F_Rej_Zdar_Char(Z.ID_ZDAR, 'IMIE_OJCA') AS VARCHAR2(30)) IMIE_OJCA
    , CAST(F_Rej_Zdar_Char(Z.ID_ZDAR, 'NAZWA_FIRMY') AS VARCHAR2(300)) NAZWA_FIRMY
    , CAST(F_Rej_Zdar_Char(Z.ID_ZDAR, 'NAZWA_FIRMY_SKR') AS VARCHAR2(100)) NAZWA_FIRMY_SKR
    , CAST(LTRIM(F_Rej_Zdar_Char(Z.ID_ZDAR, 'NAZWISKO')||' '||F_Rej_Zdar_Char(Z.ID_ZDAR, 'IMIE')||' '||F_Rej_Zdar_Char(Z.ID_ZDAR, 'IMIE_OJCA')||F_Rej_Zdar_Char(Z.ID_ZDAR, 'NAZWA_FIRMY')||DECODE(F_Rej_Zdar_Char(Z.ID_ZDAR, 'NAZWA_FIRMY'),NULL,F_Rej_Zdar_Char(Z.ID_ZDAR, 'NAZWA_FIRMY_SKR'),NULL)) AS VARCHAR2(492)) DANE_KLIE
    FROM T_ZDARZENIA Z
    WHERE F_Rej_Zdar_Char(Z.ID_ZDAR, 'JEST') = 'T';
    and functions:
    CREATE OR REPLACE FUNCTION F_Rej_Zdar_Char
    (WE_ID_ZDAR IN NUMBER
    ,WE_KOLUMNA IN VARCHAR2
    RETURN VARCHAR2
    IS
    c_numer           T_PRZYSTAPIENIA.NUMER%TYPE;--VARCHAR2(30);
    c_rodzaj           T_KLIENCI.RODZAJ%TYPE;--VARCHAR2(1);
    c_typ_przy           T_PRZYSTAPIENIA.TYP_PRZY%TYPE;--VARCHAR2(1);
    c_typ_ubez           T_PRZYSTAPIENIA.TYP_UBEZ%TYPE;--VARCHAR2(3);
    c_nazwisko           T_KLIENCI.NAZWISKO%TYPE;--VARCHAR2(30);
    c_imie                T_KLIENCI.IMIE%TYPE;--VARCHAR2(30);
    c_imie_ojca      T_KLIENCI.IMIE_OJCA%TYPE;--VARCHAR2(30);
    c_nazwa_firmy      T_KLIENCI.NAZWA_FIRMY%TYPE;--VARCHAR2(300);
    c_nazwa_firmy_skr T_KLIENCI.NAZWA_FIRMY%TYPE;--VARCHAR2(100);
    c_jest                VARCHAR2(1) := 'T';
    c EXCEPTION;
    BEGIN
    --dbms_output.put_line('id zdar wykonania '||WE_ID_ZDAR);
    BEGIN
    SELECT p.NUMER, k.RODZAJ,p.TYP_PRZY,p.TYP_UBEZ,k.nazwisko, k.imie, k.imie_ojca, k.nazwa_firmy, k.nazwa_firmy_skr
    INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
    FROM T_KLIENCI k, T_PRZYSTAPIENIA p, T_ZDARZENIA z, T_PODMIOTY D1, T_PODMIOTY D2
    WHERE p.KLIE_ID_KLIE = k.ID_KLIE
    AND z.PODM_ID_PODM = D1.ID_PODM
    AND D1.KLIE_ID_KLIE = p.KLIE_ID_KLIE
    AND Z.PODM_UMOW_ID_UMOW = D2.ID_PODM
    AND D2.PRZY_ID_PRZY = P.ID_PRZY
    AND z.ID_ZDAR = WE_ID_ZDAR;
    EXCEPTION
         WHEN NO_DATA_FOUND THEN
         BEGIN
         SELECT p.NUMER, k.RODZAJ,p.TYP_PRZY,p.TYP_UBEZ,k.nazwisko, k.imie, k.imie_ojca, k.nazwa_firmy, k.nazwa_firmy_skr
         INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
         FROM T_KLIENCI k, T_PRZYSTAPIENIA p, T_ZDARZENIA z, T_PODMIOTY D
         WHERE z.PODM_UMOW_ID_UMOW IS NULL
         AND z.PODM_ID_PODM = D.ID_PODM
         AND D.KLIE_ID_KLIE = k.ID_KLIE
         AND p.KLIE_ID_KLIE = k.ID_KLIE
         AND z.ID_ZDAR = WE_ID_ZDAR;
         EXCEPTION
              WHEN NO_DATA_FOUND THEN
              BEGIN
              SELECT NULL NUMER, NULL RODZAJ,NULL TYP_PRZY,NULL TYP_UBEZ, I.nazwisko, I.imie, I.imie_ojca, I.NAZWA NAZWA_FIRMY, I.NAZWA_SKR nazwa_firmy_skr
              INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
              FROM T_ZDARZENIA z, T_INSTYTUCJE I
              WHERE Z.TYP IN ('WFS526','WFS542','WFS553','WFS609','WFS611','WYP_KS','WYP_PO','WYP_SB','DI_ZAT')
              AND z.PODM_UMOW_ID_UMOW IS NULL
              AND Z.PODM_ID_PODM = I.ID_INST
              AND z.ID_ZDAR = WE_ID_ZDAR;
              EXCEPTION
                   WHEN NO_DATA_FOUND THEN
                   BEGIN
                   SELECT p.NUMER NUMER, DECODE(a.TYP_AGENTA,'A','F','P') RODZAJ, DECODE(a.TYP_AGENTA,'P','R',a.TYP_AGENTA) TYP_PRZY,NULL TYP_UBEZ,a.nazwisko, a.imie, a.imie_ojca, a.nazwa_firmy, a.nazwa_firmy_skr
                   INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
                   FROM T_AG_AGENCI a, T_AG_UMOWY p, T_ZDARZENIA z
                   WHERE a.ID_AGAG = p.AGAG_ID_AGAG
                   AND z.PODM_UMOW_ID_UMOW = p.ID_AGUM
                   AND z.ID_ZDAR = WE_ID_ZDAR;
                   EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                        BEGIN
                        SELECT p.NUMER NUMER, DECODE(a.TYP_AGENTA,'A','F','P') RODZAJ, DECODE(a.TYP_AGENTA,'P','R',a.TYP_AGENTA) TYP_PRZY,NULL TYP_UBEZ,a.nazwisko, a.imie, a.imie_ojca, a.nazwa_firmy, a.nazwa_firmy_skr
                        INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
                        FROM T_AG_AGENCI a, T_AG_UMOWY p, T_ZDARZENIA z
                        WHERE a.ID_AGAG = p.AGAG_ID_AGAG
                        AND z.PODM_ID_PODM = a.ID_AGAG
                        AND z.PODM_UMOW_ID_UMOW IS NULL
                        AND z.ID_ZDAR = WE_ID_ZDAR;
                        EXCEPTION
                             WHEN NO_DATA_FOUND THEN
                             BEGIN
                             SELECT p.NUMER_UMOWY NUMER, DECODE(p.TYP_AGENTA,'A','F','P') RODZAJ, DECODE(p.TYP_AGENTA,'P','R',p.TYP_AGENTA) TYP_PRZY,NULL TYP_UBEZ,p.nazwisko, p.imie_pierwsze, p.imie_ojca, p.nazwa_firmy, p.nazwa_firmy_skr
                             INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
                             FROM T_AG_KANDYDACI a, T_AG_UMOWY_TAB p, T_ZDARZENIA z
                             WHERE a.ID_AGKAN = p.TECH_PODM_ID_PODM
                             AND z.PODM_UMOW_ID_UMOW = p.TECH_ID_AGUMT
                             AND z.ID_ZDAR = WE_ID_ZDAR;
                             EXCEPTION
                                  WHEN NO_DATA_FOUND THEN
                                  BEGIN
                                  SELECT p.NUMER_UMOWY NUMER, DECODE(p.TYP_AGENTA,'A','F','P') RODZAJ, DECODE(p.TYP_AGENTA,'P','R',p.TYP_AGENTA) TYP_PRZY,NULL TYP_UBEZ,p.nazwisko, p.imie_pierwsze, p.imie_ojca, p.nazwa_firmy, p.nazwa_firmy_skr
                                  INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
                                  FROM T_AG_KANDYDACI a, T_AG_UMOWY_TAB p, T_ZDARZENIA z
                                  WHERE a.ID_AGKAN = p.TECH_PODM_ID_PODM
                                  AND z.PODM_ID_PODM = a.ID_AGKAN
                                  AND z.PODM_UMOW_ID_UMOW IS NULL
                                  AND z.ID_ZDAR = WE_ID_ZDAR;
                                  EXCEPTION
                                       WHEN NO_DATA_FOUND THEN
                                       BEGIN
                                       SELECT k.NUMER_UMOWY NUMER, DECODE(k.TYP_PRZYSTAPIENIA,'P','F','P') RODZAJ,k.TYP_PRZYSTAPIENIA TYP_PRZY,'NPO' TYP_UBEZ, k.nazwisko, k.imie_pierwsze, k.imie_ojca, k.nazwa_firmy nazwa_firmy, k.nazwa_firmy_skr nazwa_firmy_skr
                                       INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
                                       FROM T_WE_UM_NPO_TAB k, T_ZDARZENIA z
                                       WHERE z.ID_ZDAR = k.TECH_ZDAR_ID_ZDAR
                                       AND k.TYP_PRZYSTAPIENIA IN ('P','W')
                                       AND z.PODM_ID_PODM IS NULL
                                       AND z.PODM_UMOW_ID_UMOW IS NULL
                                       AND z.ID_ZDAR = WE_ID_ZDAR;
                                       EXCEPTION
                                            WHEN NO_DATA_FOUND THEN
                                            BEGIN
                                            SELECT k.NUMER_UMOWY NUMER, 'F' RODZAJ,'-' TYP_PRZY,'OPS' TYP_UBEZ, k.nazwisko, k.imie_pierwsze, k.imie_ojca, NULL nazwa_firmy, NULL nazwa_firmy_skr
                                            INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
                                            FROM T_WE_UM_OPS_TAB k,T_ZDARZENIA z
                                            WHERE z.ID_ZDAR = k.TECH_ZDAR_ID_ZDAR
                                            AND z.PODM_ID_PODM IS NULL
                                            AND z.PODM_UMOW_ID_UMOW IS NULL
                                            AND z.ID_ZDAR = WE_ID_ZDAR;
                                            EXCEPTION
                                                 WHEN NO_DATA_FOUND THEN
                                                 BEGIN
                                                 SELECT NULL NUMER, NULL RODZAJ,NULL TYP_PRZY,NULL TYP_UBEZ, NULL nazwisko, NULL imie_pierwsze, NULL imie_ojca, NULL nazwa_firmy, NULL nazwa_firmy_skr
                                                 INTO c_numer, c_rodzaj, c_typ_przy, c_typ_ubez, c_nazwisko, c_imie, c_imie_ojca, c_nazwa_firmy, c_nazwa_firmy_skr
                                                 FROM T_ZDARZENIA z
                                                 WHERE z.TYP NOT IN ('UM_OPS','UM_NPO','NPO_OP','UZUP_U')
                                                 AND z.PODM_ID_PODM IS NULL
                                                 AND z.PODM_UMOW_ID_UMOW IS NULL
                                                 AND z.ID_ZDAR = WE_ID_ZDAR;
                                                 EXCEPTION
                                                      WHEN NO_DATA_FOUND THEN
                                                           --dbms_output.put_line('id zdar wykonania '||WE_ID_ZDAR||' ostatni wyjatek');
                                                           NULL;
                                                 END;
                                            END;
                                       END;
                                  END;
                             END;
                        END;
                   END;
              END;
         END;
    END;
    --raise c;
    IF WE_KOLUMNA = 'NUMER' THEN
    RETURN c_numer;
    ELSIF WE_KOLUMNA = 'RODZAJ' THEN
    RETURN c_rodzaj;
    ELSIF WE_KOLUMNA = 'TYP_PRZY' THEN
    RETURN c_typ_przy;
    ELSIF WE_KOLUMNA = 'TYP_UBEZ' THEN
    RETURN c_typ_ubez;
    ELSIF WE_KOLUMNA = 'NAZWISKO' THEN
    RETURN c_nazwisko;
    ELSIF WE_KOLUMNA = 'IMIE' THEN
    RETURN c_imie;
    ELSIF WE_KOLUMNA = 'IMIE_OJCA' THEN
    RETURN c_imie_ojca;
    ELSIF WE_KOLUMNA = 'NAZWA_FIRMY' THEN
    RETURN c_nazwa_firmy;
    ELSIF WE_KOLUMNA = 'NAZWA_FIRMY_SKR' THEN
    RETURN c_nazwa_firmy_skr;
    ELSIF WE_KOLUMNA = 'JEST' THEN
    RETURN c_jest;
    END IF;
    END;
    CREATE OR REPLACE FUNCTION F_Rej_Zdar_Date
    (WE_ID_ZDAR IN NUMBER
    ,WE_KOLUMNA IN VARCHAR2
    RETURN DATE
    IS
    d_data DATE;
    BEGIN
    BEGIN
    SELECT p.DATA_PODPISANIA
    INTO d_data
    FROM T_KLIENCI k, T_PRZYSTAPIENIA p, T_ZDARZENIA z, T_PODMIOTY D1, T_PODMIOTY D2
    WHERE p.KLIE_ID_KLIE = k.ID_KLIE
    AND z.PODM_ID_PODM = D1.ID_PODM
    AND D1.KLIE_ID_KLIE = p.KLIE_ID_KLIE
    AND Z.PODM_UMOW_ID_UMOW = D2.ID_PODM
    AND D2.PRZY_ID_PRZY = P.ID_PRZY
    AND z.ID_ZDAR = WE_ID_ZDAR;
    EXCEPTION
         WHEN NO_DATA_FOUND THEN
         BEGIN
         SELECT p.DATA_PODPISANIA
         INTO d_data
         FROM T_KLIENCI k, T_PRZYSTAPIENIA p, T_ZDARZENIA z, T_PODMIOTY D
         WHERE z.PODM_UMOW_ID_UMOW IS NULL
         AND z.PODM_ID_PODM = D.ID_PODM
         AND D.KLIE_ID_KLIE = k.ID_KLIE
         AND p.KLIE_ID_KLIE = k.ID_KLIE
         AND z.ID_ZDAR = WE_ID_ZDAR;
         EXCEPTION
              WHEN NO_DATA_FOUND THEN
              BEGIN
              SELECT NULL DATA_PODPISANIA
              INTO d_data
              FROM T_ZDARZENIA z, T_INSTYTUCJE I
              WHERE Z.TYP IN ('WFS526','WFS542','WFS553','WFS609','WFS611','WYP_KS','WYP_PO','WYP_SB','DI_ZAT')
              AND z.PODM_UMOW_ID_UMOW IS NULL
              AND Z.PODM_ID_PODM = I.ID_INST
              AND z.ID_ZDAR = WE_ID_ZDAR;
              EXCEPTION
                   WHEN NO_DATA_FOUND THEN
                   BEGIN
                   SELECT p.DATA_PODPISANIA DATA_PODPISANIA
                   INTO d_data
                   FROM T_AG_AGENCI a, T_AG_UMOWY p, T_ZDARZENIA z
                   WHERE a.ID_AGAG = p.AGAG_ID_AGAG
                   AND z.PODM_UMOW_ID_UMOW = p.ID_AGUM
                   AND z.ID_ZDAR = WE_ID_ZDAR;
                   EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                        BEGIN
                        SELECT p.DATA_PODPISANIA DATA_PODPISANIA
                        INTO d_data
                        FROM T_AG_AGENCI a, T_AG_UMOWY p, T_ZDARZENIA z
                        WHERE a.ID_AGAG = p.AGAG_ID_AGAG
                        AND z.PODM_ID_PODM = a.ID_AGAG
                        AND z.PODM_UMOW_ID_UMOW IS NULL
                        AND z.ID_ZDAR = WE_ID_ZDAR;
                        EXCEPTION
                             WHEN NO_DATA_FOUND THEN
                             BEGIN
                             SELECT p.DATA_PODPISU_AGENTA DATA_PODPISANIA
                             INTO d_data
                             FROM T_AG_KANDYDACI a, T_AG_UMOWY_TAB p, T_ZDARZENIA z
                             WHERE a.ID_AGKAN = p.TECH_PODM_ID_PODM
                             AND z.PODM_UMOW_ID_UMOW = p.TECH_ID_AGUMT
                             AND z.ID_ZDAR = WE_ID_ZDAR;
                             EXCEPTION
                                  WHEN NO_DATA_FOUND THEN
                                  BEGIN
                                  SELECT p.DATA_PODPISU_AGENTA DATA_PODPISANIA
                                  INTO d_data
                                  FROM T_AG_KANDYDACI a, T_AG_UMOWY_TAB p, T_ZDARZENIA z
                                  WHERE a.ID_AGKAN = p.TECH_PODM_ID_PODM
                                  AND z.PODM_ID_PODM = a.ID_AGKAN
                                  AND z.PODM_UMOW_ID_UMOW IS NULL
                                  AND z.ID_ZDAR = WE_ID_ZDAR;
                                  EXCEPTION
                                       WHEN NO_DATA_FOUND THEN
                                       BEGIN
                                       SELECT k.DATA_PODPISANIA_UM DATA_PODPISANIA
                                       INTO d_data
                                       FROM T_WE_UM_NPO_TAB k, T_ZDARZENIA z
                                       WHERE z.ID_ZDAR = k.TECH_ZDAR_ID_ZDAR
                                       AND k.TYP_PRZYSTAPIENIA IN ('P','W')
                                       AND z.PODM_ID_PODM IS NULL
                                       AND z.PODM_UMOW_ID_UMOW IS NULL
                                       AND z.ID_ZDAR = WE_ID_ZDAR;
                                       EXCEPTION
                                            WHEN NO_DATA_FOUND THEN
                                            BEGIN
                                            SELECT k.DATA_PODPISANIA_UM DATA_PODPISANIA
                                            INTO d_data
                                            FROM T_WE_UM_OPS_TAB k,T_ZDARZENIA z
                                            WHERE z.ID_ZDAR = k.TECH_ZDAR_ID_ZDAR
                                            AND z.PODM_ID_PODM IS NULL
                                            AND z.PODM_UMOW_ID_UMOW IS NULL
                                            AND z.ID_ZDAR = WE_ID_ZDAR;
                                            EXCEPTION
                                                 WHEN NO_DATA_FOUND THEN
                                                 BEGIN
                                                 SELECT NULL DATA_PODPISANIA
                                                 INTO d_data
                                                 FROM T_ZDARZENIA z
                                                 WHERE z.TYP NOT IN ('UM_OPS','UM_NPO','NPO_OP','UZUP_U')
                                                 AND z.PODM_ID_PODM IS NULL
                                                 AND z.PODM_UMOW_ID_UMOW IS NULL
                                                 AND z.ID_ZDAR = WE_ID_ZDAR;
                                                 EXCEPTION
                                                      WHEN NO_DATA_FOUND THEN
                                                           d_data := NULL;
                                                 END;
                                            END;
                                       END;
                                  END;
                             END;
                        END;
                   END;
              END;
         END;
    END;
    IF WE_KOLUMNA = 'DATA_PODPISANIA' THEN
    RETURN d_data;
    END IF;
    END;

Maybe you are looking for