open-insight/LSL2/STPROC/DELETE_RECORD_FROM_SQL.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

99 lines
3.4 KiB
Plaintext

Compile function Delete_Record_From_SQL(Table, Key, LogError, pKey)
/*****************************************************************************\
Deletes the given record from the MSSQL database. Since every table differs
from the next, it's not really possible to use the same code base for all
tables. Therefore, common functionality has been moved into separate
stored procedures. Supported tables are ones that have a stored procedure
that handles the copy request. These are called the Handlers. A Handler
is identified by the following naming convention:
DELETE_XYZ_RECORD_TO_SQL
XYZ is a placeholder for a table name. For example, the ASM_PART table has
a handler called DELETE_ASM_PART_RECORD_TO_SQL. If a table does not have a
handler, then it is not supported by this procedure.
History
-------
09/15/2010 KRF Original Programmer
\*****************************************************************************/
$insert Microsoft_Ado_Equates
If Assigned(LogError) else LogError = 0
Declare subroutine Sql_Services, SRP_COM
Declare function Sql_Services, Error_Services, SRP_COM, Environment_Services
Ans = ""
// Make sure table is uppercase
Convert @LOWER_CASE to @UPPER_CASE in Table
// The expected name of the handler
Handler = "DELETE_":Table:"_RECORD_FROM_SQL"
// Find the stored procedure that handles this table
Open "SYSOBJ" to hSysObj then
Read ObjCode from hSysObj, "$":Handler:"*LSL2" then
// Connect to the ODBC/ADO
If SRP_Com(Connection, "CREATE", "ADODB.Connection") then
// Connect to the database via ODBC
ConnectionString = Environment_Services('GetSQLScrapeConnectionString')
If SRP_Com(Connection, "CALL", "Open", ConnectionString) EQ "" then
// Read the record and call the handler
If Key NE "" then
Ans = Function(@Handler(Connection, Key))
If Ans EQ '' then
If Assigned(pKey) then
Open 'SQL_PENDING' to pTable then
Delete pTable, pKey else null
end
end
end
end
end else
Ans = 'Unable to open connection to SQL server. SQL connection error: ':SRP_Com(Connection, "ERROR")
end
SRP_Com(Connection, "CALL", "Close")
SRP_Com(Connection, "RELEASE")
end else
Ans = "Unable to create ADO connection."
end
end
end
If LogError AND Len(Ans) then
Open "SQL_ERROR" to hSqlError then
Read Errors from hSqlError, Date() then
Errors := @FM:Table:@VM:Key:@VM:Ans
Write Errors to hSqlError, Date()
end else
Errors = Table:@VM:Key:@VM:Ans
Write Errors to hSqlError, Date()
end
end
end
// Always log the result
If Assigned(pKey) then
Open 'SQL_LOG' to hLog then
If Ans EQ '' then
Result = 'PROCESSED'
end else
Result = Ans
end
CurrDate = Date()
Read Log from hLog, CurrDate then
Log := @FM:pKey:@VM:Result
end else
Log = pKey:@VM:Result
end
Write Log to hLog, CurrDate
end
end
Return Ans