I am using HP-UX aCC compiler [HP C/aC++ B3910B A.06.26] to compile an old C/Pro*C application (already compiled with an older version of aCC compiler).
The compilation is always failing with the below error
Pro*C/C++: Release 10.2.0.4.0 - Production on Sun Apr 28 12:01:34 2013
Copyright (c) 1982, 2007, Oracle. All rights reserved.
System default option values taken from: /data/oracle/product/10.2.0/db_1//precomp/admin/pcscfg.cfg
PCC-I-02106, Userid only used when SQLCHECK = FULL, userid ignored.
Semantic error at line 252, column 9, file ToolDb.pcpp:
EXECUTE
........1
PCC-S-02345, SQLCHECK=SEMANTICS must be given when embedded PL/SQL blocks are us
ed
gmake: *** [ToolDb.c] Error 1
As I understood, the compiler cannot recognize the proc *C keyword "EXECUTE" used to call a database stored procedure!
Any idea please that can help tp solve this issue?
Thank you very much in advance.
Regards
Add SQLCHECK=SEMANTICS to your Proc execute command
It is not something like Pro*C compiler is not identifying the EXECUTE command. Whenever there is error in PL/SQL block first word is displayed.
There might be some issue inside the PL/SQL.
It would be helpful if we can have the PL/SQL block.
Related
Moin,
I used the Oracle-Profiler from the DBMS_HPROF package a lot to find out where the right queries to optimize.
This time I ran into a problem, even though it seems to be setup correctly.
Profiling even complex parts of the application I try to optimize produce trace files that are processed without any issues by the plshprof tool that produces the HTML reports from the trace files.
When I profile this one particular procedure it produces a trace file that seems ok (it is properly ended and so).
But when I use plshprof on it, out comes always an HTML file that ends after 12542 Bytes (no, the drive is not full).
I tried executing an additional query before the problematic procedure and the result was that the HTML ended again after exactly 12542 Bytes.
In one case the HTML ended in the middle of an attribute of a tag in the other before the > of the ending tag.
From the beginning to the EOF the HTML report looks ok!
Windows Server 2019 Build 1809
Oracle Database Version: 19c (19.3) Standard Edition 2
This is how I called the profiler and the procedure:
BEGIN
DBMS_HPROF.START_PROFILING(LOCATION=>'PLSHPROF_DIR', FILENAME=> 'test1.trc');
SOME_PACKAGE.SOME_PROCEDURE();
COMMIT;
DBMS_HPROF.STOP_PROFILING;
END;
/
This how I called it:
C:\TEMP>plshprof test1.trc
PLSHPROF: Release 19.0.0.0.0 - Production on Do Mrz 24 12:04:00 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
[160 symbols processed]
C:\TEMP>echo %ERRORLEVEL%
-1073741819
C:\TEMP>plshprof
PLSHPROF: Release 19.0.0.0.0 - Production on Fr Mrz 25 11:56:20 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Usage: plshprof [<option>...] <tracefile1> [<tracefile2>]
Options:
-trace <symbol> (no default) specify function name of tree root
-skip <count> (default=0) skip first <count> invokations
-collect <count> (default=1) collect info for <count> invokations
-output <filename> (default=<symbol>.html or <tracefile1>.html)
-summary print time only
C:\TEMP>
As you can see last line of the output is missing and there is an error code but there is no error message nor any switch to verbose the output of the tool.
C:\TEMP>plshprof test2.trc
PLSHPROF: Release 19.0.0.0.0 - Production on Do Mrz 24 12:41:17 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
[12 symbols processed]
[Report written to 'test2.html']
C:\TEMP>echo %ERRORLEVEL%
0
The trace file seems to end properly:
P#C SQL."SCHEMANAME"."SOME_PACKAGE"::11."__static_sql_exec_line133" #133."8ggw94h7mvxd7"
P#! COMMIT
P#X 79
P#R
P#X 17
P#R
P#C SQL."".""."__static_sql_exec_line8" #8."8ggw94h7mvxd7"
P#! COMMIT
P#X 160
P#R
P#C PLSQL."SYS"."DBMS_HPROF"::11."STOP_PROFILING"#980980e97e42f8ec #747
P#R
P#! PL/SQL Timer Stopped
Did anybody ever ran into this problem and/or found out what is/was the problem?
I can imagine it has to do with the complexity of the function tree called but I am not able to figure out where to start.
The procedure uses several packages and reads and writes from and to tables and views with triggers which also call functions that do the same.
Thanks in advance!
I am trying to call functions from ntvdm.lib in Visual Studio 2019 using the Visual Studio 2017 - Windows XP (v141_XP) platform toolset, with the following defined:
#define _WIN32_WINNT 0x0501
#define i386
running dumpbin /exports on the LIB file I get the following output:
Microsoft (R) COFF/PE Dumper Version 14.29.30037.0
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file ntvdm.lib
File Type: LIBRARY
Exports
ordinal name
_BlockWOWIdle#4
_CurrentMonitorTeb
_DBGNotifyDebugged#4
_DBGNotifyNewTask#8
_DBGNotifyRemoteThreadAddress#8
_DispatchInterrupts#0
_Dos_Flag_Addr
_DpmiSetIncrementalAlloc#4
_ExpLdt
_FlatAddress
_GetDOSAppName#4
_InitialVdmDbgFlags
_InitialVdmTibFlags
_IsCdRomFile#4
_MGetVdmPointer#12
_RedirectLongFileName#12
_RedirectShortFileName#12
_RegisterWOWIdle#0
_ResumeTimerThread#0
_SelectorLimit
_SetShadowDescriptorEntries#8
_ShortPathEnvVar#4
_Sim32pGetVDMPointer#8
_SoftPcEoi#8
_SuspendTimerThread#0
_VDDAllocMem#12
_VDDAllocateDosHandle#12
_VDDAssociateNtHandle#12
_VDDDeInstallIOHook#12
_VDDDeInstallMemoryHook#12
_VDDDeInstallUserHook#4
_VDDExcludeMem#12
_VDDFreeMem#12
_VDDIncludeMem#12
_VDDInstallIOHook#16
_VDDInstallMemoryHook#16
_VDDInstallUserHook#20
_VDDQueryDMA#12
_VDDReleaseDosHandle#8
_VDDReleaseIrqLine#8
_VDDRequestDMA#16
_VDDReserveIrqLine#8
_VDDRetrieveNtHandle#16
_VDDSetDMA#16
_VDDSimulate16#0
_VDDTerminateVDM#0
_VdmDbgAttach#0
_VdmGetParametersInfoError#0
_VdmMapFlat#12
_VdmParametersInfo#12
_VdmTraceEvent#12
_WOWSysErrorBox#20
_WaitIfIdle#0
_call_ica_hw_interrupt#12
_cmdCheckTemp#4
_cmdCheckTempInit#0
_cpu_createthread#8
_demClientErrorEx#12
_demFileDelete#4
_demFileFindFirst#12
_demFileFindNext#4
_demGetFileTimeByHandle_WOW#4
_demGetPhysicalDriveType#4
_demIsShortPathName#8
_demLFNCleanup#0
_demLFNGetCurrentDirectory#8
_demSetCurrentDirectoryGetDrive#8
_demWOWLFNAllocateSearchHandle#4
_demWOWLFNCloseSearchHandle#4
_demWOWLFNEntry#4
_demWOWLFNGetSearchHandle#4
_demWOWLFNInit#4
_fSeparateWow
_getAF#0
_getAH#0
_getAL#0
_getAX#0
_getBH#0
_getBL#0
_getBP#0
_getBX#0
_getCF#0
_getCH#0
_getCL#0
_getCS#0
_getCX#0
_getDF#0
_getDH#0
_getDI#0
_getDL#0
_getDS#0
_getDX#0
_getEAX#0
_getEBP#0
_getEBX#0
_getECX#0
_getEDI#0
_getEDX#0
_getEFLAGS#0
_getEIP#0
_getES#0
_getESI#0
_getESP#0
_getFS#0
_getGS#0
_getIF#0
_getIP#0
_getIntelRegistersPointer#0
_getMSW#0
_getOF#0
_getPF#0
_getSF#0
_getSI#0
_getSP#0
_getSS#0
_getZF#0
_host_CreateThread#24
_host_ExitThread#4
_host_com_close#4
_host_direct_access_error#4
_host_simulate#0
_pDeviceChain
_setAF#4
_setAH#4
_setAL#4
_setAX#4
_setBH#4
_setBL#4
_setBP#4
_setBX#4
_setCF#4
_setCH#4
_setCL#4
_setCS#4
_setCX#4
_setDF#4
_setDH#4
_setDI#4
_setDL#4
_setDS#4
_setDX#4
_setEAX#4
_setEBP#4
_setEBX#4
_setECX#4
_setEDI#4
_setEDX#4
_setEFLAGS#4
_setEIP#4
_setES#4
_setESI#4
_setESP#4
_setFS#4
_setGS#4
_setIF#4
_setIP#4
_setMSW#4
_setOF#4
_setPF#4
_setSF#4
_setSI#4
_setSP#4
_setSS#4
_setZF#4
Summary
BD .debug$S
14 .idata$2
14 .idata$3
4 .idata$4
4 .idata$5
A .idata$6
The function definition I'm trying to call in VDDSVC.h is:
#define GetVDMPointer(Address, Size, Mode) Sim32GetVDMPointer(\
Address, Size, Mode)
However visual studio error is:
Error LNK2019 unresolved external symbol _MGetVdmPointer referenced in function _VddDispatch
_MGetVdmPointer is in the lib file but referenced as _MGetVdmPointer#12
I reviewed the options here but couldn't determine which one might apply in my scenario https://learn.microsoft.com/en-us/cpp/error-messages/tool-errors/linker-tools-error-lnk2019?view=msvc-170
In Linker -> General -> Show Progress I tried setting /VERBOSE although no additional information was generated in the logs
I tried changing calling convention to "__stdcall" in C/C++ -> Advanced Calling Convention
I've tried changing files from .C to .CPP although get similar error (Although the symbol looked for is a c++ mangled style name)
The issue was calling convention needs to be modified to "__stdcall" in C/C++ -> Advanced Calling Convention
Which I had tried, however Visual Studio 2019 project properties was defaulting to configuration for "Release" build and not the current build type "Debug(Active)" which effectively made my initial change of that setting ineffective.
As suggested in comments by IInspectable:
When changing global project properties, always make sure the "Configuration" is set to "All Configurations" and "Platform" is set to "All Platforms"
I have a SSIS project that back in December start failing validation on an expression to create DT_DBTIMESTAMP. This expression hasn't changed since 2018 that I can tell, the SQL server was upgraded not sure if the timing correlates or not. The error is "The expression for variable "EndDate" failed evaluation. There was an error in the expression"
#[$Project::UseOverrideDate]? (DT_DBTIMESTAMP)((DT_WSTR, 4)#[$Project::Year] + "-" + (DT_WSTR, 2)(#[$Project::Month] + 1) + "-" + "01") : DATEADD( "dd", -(DATEPART( "dd",GETDATE() ) -1), (DT_DBDATE) GETDATE())
The UseOverrideDate is a bool so we can manually set a month and year in parameters (Month, Year)
The package is developed in VS2012 and evaluates out successful in the dev studio and under the debugger; do any of you see anything that might cause the error. The SSIS package completes its task with the expected results so I am wondering what the error is being thrown for.
Thanks in advance for any insight you may provide.
After more rooting around abit more with no success I deleted the package out of the SSISDB and re-deployed it back in by way of the command line; the problem went away. Not sure what the deployment process wasn't doing but this 2.5 day excercise of chasing down something that works elsewere is over, Thank you for everyones time.
It works for me so I think we're missing some pieces here
I defined the following project parameters
and created a package variable with the above expression
If I flip the project parameter to True, I see the EndDate change to 4/1/2021
The comment indicates that the problem only surfaces when executed outside of Visual Studio. The results here are the same as I experience when I deploy to the SSISDB but are easier for me to show without screenshots.
I added a trivial script task to echo my variables to the output window. I built the ispac and then ran it two times to catch both cases.
Execute the project and package setting my UseOverrideDate to False
C:\Users\bfellows\source\repos\SO_Trash\SO_Trash\bin\Development>dtexec /proj SO_Trash.ispac /pack SO_66772141.dtsx /set \Package.Variables[$Project::UseOverrideDate];False /rep V
Microsoft (R) SQL Server Execute Package Utility
Version 14.0.3370.1 for 32-bit
Copyright (C) 2017 Microsoft. All rights reserved.
Started: 12:17:49 PM
Info: 2021-03-24 12:17:49.97
Code: 0x00000000
Source: SCR Echo Back SCR Echo Back
Description: User::EndDate : 3/1/2021 12:00:00 AM
End Info
DTExec: The package execution returned DTSER_SUCCESS (0).
Started: 12:17:49 PM
Finished: 12:17:49 PM
Elapsed: 0.266 seconds
Flip the UseOverride To True
C:\Users\bfellows\source\repos\SO_Trash\SO_Trash\bin\Development>dtexec /proj SO_Trash.ispac /pack SO_66772141.dtsx /set \Package.Variables[$Project::UseOverrideDate];True /rep V
Microsoft (R) SQL Server Execute Package Utility
Version 14.0.3370.1 for 32-bit
Copyright (C) 2017 Microsoft. All rights reserved.
Started: 12:17:56 PM
Info: 2021-03-24 12:17:56.93
Code: 0x00000000
Source: SCR Echo Back SCR Echo Back
Description: User::EndDate : 4/1/2021 12:00:00 AM
End Info
DTExec: The package execution returned DTSER_SUCCESS (0).
Started: 12:17:56 PM
Finished: 12:17:56 PM
Elapsed: 0.25 seconds
I ran dtexec with a /REP /v to turn on verbose logging. As you can see, my variable value changes as expected and no error is generated.
Given that you've resolved the issue by deleting and recreating from scratch, it would seem that something in the deployment/"the SQL server was upgraded" was in play here but not enough data to diagnose root cause.
I am using POSTGRES 10.6 compiled on AIX 7.1
I am getting error XX000 when trying to perform an update.
I am using C code using libpq libraries in my code. See below error in the postgres log file.
I found that the error is issued from postgres source file:
src/backend/storage/lmgr/lwlock.c (line 1731)
Do you have any idea what can be causing this error?
2019-03-21 09:08:48 EDT postgres> ERROR: lock buffer_content is not held
2019-03-21 09:08:48 EDT postgres> STATEMENT: insert into mxrmen_rec values ($1,$2,$3,$4,$5,$6,
$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,
$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,
$52,$53,$54,$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,
$74,$75,$76)
I appreciate any help. Let me know if you need more information
Thank you
Faouzi
I want pass a value to ssis package, but i have an error back
I execute with batch, the command
dtexec /F "c:\MyPackage.dtsx" /SET \Package.Variables[User::Valore].Properties[Value];2
This is the error (warning) :
C:>dtexec /F "c:\AnagraficaTOC.dtsx" /SET \Package.Variables[User::Valore].Prop
erties[Value];2
Microsoft (R) SQL Server Execute Package Utility
Version 10.50.2500.0 for 64-bit
Copyright (C) Microsoft Corporation 2010. All rights reserved.
Started: 11:30:10
Warning: 2011-11-12 11:30:10.95
Code: 0x80012017
Source: AnagraficaTOC
Description: The package path referenced an object that cannot be found: "\Pa
ckage.Variables[User::Valore].Properties[Value]". This occurs when an attempt is
made to resolve a package path to an object that cannot be found.
End Warning
DTExec: Could not set \Package.Variables[User::Valore].Properties[Value] value t
o 2.
Started: 11:30:10
Finished: 11:30:10
Elapsed: 0.203 seconds
What does this mean? The syntax looks right to me, I checked on many sites, what is wrong?
Thanks to all!
Your syntax looks correct assuming your variable is exactly named Valore and lives at the package level scope.
Variables are case sensitive so if it's named valore, VAlore, etc, it will not match.
Variables can be created at any level in the program so scope does matter. Locate the variable Valore and verify it's scope is at the package level (the Scope will match the Package.Name property). This is an example of how to reference a variable declared inside a Data Flow Task which is nested inside a Sequence Container.
\Package\Sequence Container\Data Flow Task.Variables[User::something].Properties[Value]
I put together a simple package and called it using your input. It worked fine
C:\src\SSISHackAndSlash\SSISHackAndSlash>dtexec /F ".\AnagraficaTOC.dtsx" /SET \Package.Variables[User::Valore].Properties[Value];2
Microsoft (R) SQL Server Execute Package Utility
Version 10.50.2500.0 for 64-bit
Copyright (C) Microsoft Corporation 2010. All rights reserved.
Started: 8:05:45 AM
Warning: 2011-11-12 08:05:45.93
Code: 0x00000000
Source: Script Task value check
Description: Valore : 2
End Warning
DTExec: The package execution returned DTSER_SUCCESS (0).
Started: 8:05:45 AM
Finished: 8:05:45 AM
Elapsed: 0.328 seconds
I also tested with the above command line from inside a batch file and it too worked as expected.
Finally, it seems you've scrubbed your input for us
"dtexec /F "c:\MyPackage.dtsx" /SET \Package.Variables[User::Valore].Properties[Value];2"
vs
dtexec /F "c:\AnagraficaTOC.dtsx" /SET \Package.Variables[User::Valore].Prop erties[Value];2
Despite the space in Properties in the second example, I assume that is related to copying values as the error message has a correct path. The first one has quotes in the wrong places (at least when I run it as provided I receive error - cannot find the path specified) Could the issue be that you're looking at an older version of the package (or you have multiple copies of it)?
had the same problem, was resolved by changing the namespace from config to user in the ssis variables pane