SlideShare uma empresa Scribd logo
1 de 8
-- =============================================
-- Author: Simon Hoyle
-- Create date: 23/4/2002
-- Description: Part 3 of personnel search procedure
-- =============================================
ALTER PROCEDURE [dbo].[usp_FindP_ShowPersonnel]
@lastname as nvarchar(30),
@Discipline as nvarchar(50),
@Discipline2 as nvarchar(50),
@Discipline3 as nvarchar(50),
@Discipline4 as nvarchar(50),
@PrimaryRank as nvarchar(50),
@Country as nvarchar(30),
@OnshoreExperience bit,
@OffshoreExperience bit,
@HasContract as nvarchar(10),
@PersonalDetails nvarchar(100),
@PersonalDetails2 nvarchar(100),
@Notes nvarchar(100),
@ClientEnqNotes nvarchar(100),
@ValidCertsOnly as smallint,
@UserTag bit,
@AvailableFrom as nvarchar(10),
@DateAvailExcludeBlank bit,
@DateAvailMonthLimit bit
AS
DECLARE @sqlstatement as nvarchar(2000),
@TempFileIndex as nvarchar(1),
@where as nvarchar(1000),
@tempviewname as nvarchar(30),
@StatusCompareType nvarchar(2),
@LoopDone as int,
@Include as smallint,
@Status as nvarchar(20),
@YesMatch as nvarchar(500),
@NoMatch as nvarchar(500),
@MatchString as nvarchar(600),
@DateAvailFrom as datetime, @DateAvailTo as datetime
--
-- Clear temp tables
DELETE FROM USYS_FindPersonnel_Results1 WHERE
TerminalID=HOST_ID()
DELETE FROM USYS_FindPersonnel_Results2 WHERE
TerminalID=HOST_ID()
DELETE FROM USYS_FindPersonnel_Results3 WHERE
TerminalID=HOST_ID()
--
-- Standard search, into USYS_FindPersonnel_Results1
EXEC usp_FindP_StdSearch @lastname, @Discipline,
@Discipline2, @Discipline3, @Discipline4, @PrimaryRank,
@Country, @OnshoreExperience, @OffshoreExperience
SET @TempFileIndex = 1
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
--
-- User tag search ?
IF (@UserTag<>0)
BEGIN
-- If a tagged search, USYS_FindPersonnel
will have been loaded with PersonnelID's of tagged records
-- by frmFindPersonnel/ShowPersonnel.
-- Copy standard search result matched with
tagged to USYS_FindPersonnel_Results2
INSERT INTO USYS_FindPersonnel_Results2
(PersonnelID)
SELECT
USYS_FindPersonnel_Results1.PersonnelID FROM
USYS_FindPersonnel_Results1
INNER JOIN USYS_FindPersonnel ON
USYS_FindPersonnel_Results1.PersonnelID =
USYS_FindPersonnel.PersonnelID
WHERE USYS_FindPersonnel.TerminalID =
host_id()
-- Clear USYS_FindPersonnel_Results1
DELETE FROM USYS_FindPersonnel_Results1 WHERE
TerminalID=HOST_ID()
-- Copy back from
USYS_FindPersonnel_Results2 to USYS_FindPersonnel_Results1
INSERT INTO USYS_FindPersonnel_Results1
(PersonnelID)
SELECT PersonnelID FROM
USYS_FindPersonnel_Results2
WHERE USYS_FindPersonnel_Results2.TerminalID
= host_id()
-- Clear USYS_FindPersonnel_Results2
DELETE FROM USYS_FindPersonnel_Results2 WHERE
TerminalID=HOST_ID()
END
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
--
-- AvailableDate?
IF (Len(@AvailableFrom)> 0)
-- YES,
BEGIN
IF (ISDATE(@AvailableFrom) = 1)
BEGIN
SET @DateAvailFrom =
Cast(@AvailableFrom as datetime)
--
IF (@DateAvailMonthLimit = 1)
SET @DateAvailTo = DATEADD(m, 1,
@DateAvailFrom)
ELSE
SET @DateAvailTo = DATEADD(m, 12,
@DateAvailFrom)
--
IF (@DateAvailExcludeBlank = 0)
INSERT INTO
USYS_FindPersonnel_Results2 (PersonnelID)
SELECT
USYS_FindPersonnel_Results1.PersonnelID FROM
USYS_FindPersonnel_Results1
INNER JOIN tblPersonnel ON
USYS_FindPersonnel_Results1.PersonnelID =
tblPersonnel.PersonnelID
WHERE
USYS_FindPersonnel_Results1.TerminalID = host_id()
AND (
(tblPersonnel.AvailableFrom BETWEEN @DateAvailFrom AND
@DateAvailTo)
OR
(tblPersonnel.AvailableFrom IS NULL)
)
ELSE
INSERT INTO
USYS_FindPersonnel_Results2 (PersonnelID)
SELECT
USYS_FindPersonnel_Results1.PersonnelID FROM
USYS_FindPersonnel_Results1
INNER JOIN tblPersonnel ON
USYS_FindPersonnel_Results1.PersonnelID =
tblPersonnel.PersonnelID
WHERE
USYS_FindPersonnel_Results1.TerminalID = host_id()
AND
(tblPersonnel.AvailableFrom BETWEEN @DateAvailFrom AND
@DateAvailTo)
/*INSERT INTO
USYS_FindPersonnel_Results2 (PersonnelID)
SELECT
USYS_FindPersonnel_Results1.PersonnelID FROM
USYS_FindPersonnel_Results1
INNER JOIN tblPersonnel ON
USYS_FindPersonnel_Results1.PersonnelID =
tblPersonnel.PersonnelID
WHERE
USYS_FindPersonnel_Results1.TerminalID = host_id()
AND (
(tblPersonnel.AvailableFrom <= Cast(@AvailableFrom as
datetime))
OR
(tblPersonnel.AvailableFrom IS NULL)
)*/
-- Clear USYS_FindPersonnel_Results1
DELETE FROM USYS_FindPersonnel_Results1
WHERE TerminalID=HOST_ID()
-- Copy back from
USYS_FindPersonnel_Results2 to USYS_FindPersonnel_Results1
INSERT INTO USYS_FindPersonnel_Results1
(PersonnelID)
SELECT PersonnelID FROM
USYS_FindPersonnel_Results2
WHERE
USYS_FindPersonnel_Results2.TerminalID = host_id()
-- Clear USYS_FindPersonnel_Results2
DELETE FROM USYS_FindPersonnel_Results2
WHERE TerminalID=HOST_ID()
END
END
--
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
--
-- HasContract?
IF (Len(@HasContract)> 0)
-- YES,
BEGIN
IF (ISDATE(@HasContract) = 1)
BEGIN
INSERT INTO USYS_FindPersonnel_Results2
(PersonnelID)
SELECT UFPR.PersonnelID
FROM USYS_FindPersonnel_Results1 AS
UFPR INNER JOIN
tblContract AS C ON UFPR.PersonnelID =
C.SubcontractorID
WHERE (UFPR.TerminalID = HOST_ID()) AND
(C.StartDate >= CAST(@HasContract
AS datetime))
-- Clear USYS_FindPersonnel_Results1
DELETE FROM USYS_FindPersonnel_Results1
WHERE TerminalID=HOST_ID()
-- Copy back from
USYS_FindPersonnel_Results2 to USYS_FindPersonnel_Results1
INSERT INTO USYS_FindPersonnel_Results1
(PersonnelID)
SELECT PersonnelID FROM
USYS_FindPersonnel_Results2
WHERE
USYS_FindPersonnel_Results2.TerminalID = host_id()
-- Clear USYS_FindPersonnel_Results2
DELETE FROM USYS_FindPersonnel_Results2
WHERE TerminalID=HOST_ID()
END
END
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
--
-- Text search in tblPersonnnel ?
IF ((Len(@PersonalDetails)>1) OR
(Len(@PersonalDetails2)>1) OR (Len(@Notes)>1))
BEGIN
EXEC usp_FindP_TextSearch @PersonalDetails,
@PersonalDetails2, @Notes
END
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
--
-- Text search in tblClientEnqPersNotes?
IF (Len(@ClientEnqNotes)>1)
BEGIN
EXEC usp_FindP_TextSearch_CEPN
@ClientEnqNotes
END
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
--
-- Are there any Certification requirements?
IF EXISTS (SELECT TerminalID FROM USYS_CertSelect
WHERE (TerminalID = HOST_ID()) AND (USYS_CertSelect.Include
<> 0))
-- YES, use USYS_CertSelect to filter into
USYS_FindPersonnel_Results2
BEGIN
IF (@ValidCertsOnly<>0)
SET @tempviewname =
'viewFindPers_CertValidUnique'
ELSE
SET @tempviewname =
'viewFindPers_CertsUnique'
--
EXEC usp_FindP_MakeCertsWhere @tempviewname,
@TempFileIndex, @where OUTPUT
SET @sqlstatement = 'INSERT INTO
USYS_FindPersonnel_Results' + Cast((@TempFileIndex + 1) as
varchar) + ' (PersonnelID) SELECT ' + @tempviewname +
'.PersonnelID FROM USYS_FindPersonnel_Results' +
Cast(@TempFileIndex as varchar) + ' LEFT OUTER JOIN ' +
@tempviewname + ' ON USYS_FindPersonnel_Results' +
Cast(@TempFileIndex as varchar)+ '.PersonnelID = ' +
@tempviewname + '.PersonnelID WHERE ' + @where
EXEC sp_executesql @sqlstatement
--INSERT USYS_MSG VALUES (Cast(@sqlstatement
as nvarchar(1000)))
--INSERT USYS_MSG VALUES (Cast( 'Called
sp_executesql (Certs)- Error status=' + Cast(@@Error as
char) as nvarchar(1000)))
SET @TempFileIndex = @TempFileIndex + 1
END
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
--
-- Are there any Status requirements?
IF EXISTS (SELECT TerminalID FROM USYS_StatusSelect
WHERE (TerminalID = HOST_ID()) AND (Include <> 0))
-- YES, use USYS_StatusSelect to filter
USYS_FindPersonnel_Results2 to USYS_FindPersonnel_Results3
BEGIN
-- Create temp tables for include and exclude
enties
SELECT Status INTO #includestatus
FROM dbo.USYS_StatusSelect
WHERE (Include > 0) AND (TerminalID = HOST_ID())
--
SELECT Status INTO #excludestatus
FROM dbo.USYS_StatusSelect
WHERE (Include < 0) AND (TerminalID = HOST_ID())
--
-- Build action query
SET @sqlstatement = ''
--
IF Exists (SELECT * FROM #includestatus)
SET @sqlstatement = '(P.Status IN (SELECT Status
FROM #includestatus))'
--
IF Exists (SELECT * FROM #excludestatus)
BEGIN
IF (Len(@sqlstatement) > 0) SET
@sqlstatement = @sqlstatement + ' AND '
--
SET @sqlstatement = @sqlstatement +
'(P.Status NOT IN (SELECT Status FROM #excludestatus))'
END
--
SET @sqlstatement = 'INSERT INTO
USYS_FindPersonnel_Results' + Cast((@TempFileIndex + 1) as
varchar) +
' (PersonnelID) SELECT P.PersonnelID FROM
dbo.tblPersonnel AS P ' +
'RIGHT OUTER JOIN
dbo.USYS_FindPersonnel_Results' + Cast(@TempFileIndex as
varchar) + ' AS U ' +
'ON P.PersonnelID = U.PersonnelID ' +
'WHERE ((U.TerminalID = HOST_ID()) AND ' +
@sqlstatement + ')'
--
--INSERT USYS_MSG VALUES (@sqlstatement)
--
EXEC sp_executesql @sqlstatement
SET @TempFileIndex = @TempFileIndex + 1
END
--
-- Ensure result in dbo.USYS_FindPersonnel_Results5
IF (@TempFileIndex < 3)
BEGIN
-- Move result
SET @sqlstatement = 'INSERT INTO
USYS_FindPersonnel_Results3 (PersonnelID) SELECT
PersonnelID FROM dbo.USYS_FindPersonnel_Results' +
Cast(@TempFileIndex as varchar) + ' WHERE TerminalID =
HOST_ID()'
EXEC sp_executesql @sqlstatement
--select @sqlstatement
END
--
-- Return recordset size
SELECT COUNT(PersonnelID) AS CountOfRecordset FROM
USYS_FindPersonnel_Results3 WHERE TerminalID = HOST_ID()

Mais conteúdo relacionado

Mais procurados

Tracking Data Updates in Real-time with Change Data Capture
Tracking Data Updates in Real-time with Change Data CaptureTracking Data Updates in Real-time with Change Data Capture
Tracking Data Updates in Real-time with Change Data CaptureScyllaDB
 
Comparative Genomics with GMOD and BioPerl
Comparative Genomics with GMOD and BioPerlComparative Genomics with GMOD and BioPerl
Comparative Genomics with GMOD and BioPerlJason Stajich
 
Intro to OTP in Elixir
Intro to OTP in ElixirIntro to OTP in Elixir
Intro to OTP in ElixirJesse Anderson
 
Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)Michael Schwern
 
SQL querys in detail || Sql query slides
SQL querys in detail || Sql query slidesSQL querys in detail || Sql query slides
SQL querys in detail || Sql query slidesgourav kottawar
 
Python fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuanPython fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuanWei-Yuan Chang
 
SQL || overview and detailed information about Sql
SQL || overview and detailed information about SqlSQL || overview and detailed information about Sql
SQL || overview and detailed information about Sqlgourav kottawar
 
Python testing-frameworks overview
Python testing-frameworks overviewPython testing-frameworks overview
Python testing-frameworks overviewJachym Cepicky
 
Chapter 2: R tutorial Handbook for Data Science and Machine Learning Practiti...
Chapter 2: R tutorial Handbook for Data Science and Machine Learning Practiti...Chapter 2: R tutorial Handbook for Data Science and Machine Learning Practiti...
Chapter 2: R tutorial Handbook for Data Science and Machine Learning Practiti...Raman Kannan
 
Writing Readable Code with Pipes
Writing Readable Code with PipesWriting Readable Code with Pipes
Writing Readable Code with PipesRsquared Academy
 
PHP tips and tricks
PHP tips and tricks PHP tips and tricks
PHP tips and tricks Damien Seguy
 
Database API, your new friend
Database API, your new friendDatabase API, your new friend
Database API, your new friendkikoalonsob
 
Lecture5 my sql statements by okello erick
Lecture5 my sql statements by okello erickLecture5 my sql statements by okello erick
Lecture5 my sql statements by okello erickokelloerick
 
Regression and Classification with R
Regression and Classification with RRegression and Classification with R
Regression and Classification with RYanchang Zhao
 

Mais procurados (16)

Tracking Data Updates in Real-time with Change Data Capture
Tracking Data Updates in Real-time with Change Data CaptureTracking Data Updates in Real-time with Change Data Capture
Tracking Data Updates in Real-time with Change Data Capture
 
Comparative Genomics with GMOD and BioPerl
Comparative Genomics with GMOD and BioPerlComparative Genomics with GMOD and BioPerl
Comparative Genomics with GMOD and BioPerl
 
Intro to OTP in Elixir
Intro to OTP in ElixirIntro to OTP in Elixir
Intro to OTP in Elixir
 
Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)Simple Ways To Be A Better Programmer (OSCON 2007)
Simple Ways To Be A Better Programmer (OSCON 2007)
 
SQL querys in detail || Sql query slides
SQL querys in detail || Sql query slidesSQL querys in detail || Sql query slides
SQL querys in detail || Sql query slides
 
Python fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuanPython fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuan
 
SQL || overview and detailed information about Sql
SQL || overview and detailed information about SqlSQL || overview and detailed information about Sql
SQL || overview and detailed information about Sql
 
Python testing-frameworks overview
Python testing-frameworks overviewPython testing-frameworks overview
Python testing-frameworks overview
 
Quick reference for cql
Quick reference for cqlQuick reference for cql
Quick reference for cql
 
Chapter 2: R tutorial Handbook for Data Science and Machine Learning Practiti...
Chapter 2: R tutorial Handbook for Data Science and Machine Learning Practiti...Chapter 2: R tutorial Handbook for Data Science and Machine Learning Practiti...
Chapter 2: R tutorial Handbook for Data Science and Machine Learning Practiti...
 
Writing Readable Code with Pipes
Writing Readable Code with PipesWriting Readable Code with Pipes
Writing Readable Code with Pipes
 
PHP tips and tricks
PHP tips and tricks PHP tips and tricks
PHP tips and tricks
 
Quick reference for hql
Quick reference for hqlQuick reference for hql
Quick reference for hql
 
Database API, your new friend
Database API, your new friendDatabase API, your new friend
Database API, your new friend
 
Lecture5 my sql statements by okello erick
Lecture5 my sql statements by okello erickLecture5 my sql statements by okello erick
Lecture5 my sql statements by okello erick
 
Regression and Classification with R
Regression and Classification with RRegression and Classification with R
Regression and Classification with R
 

Destaque

Diaporama 10ª Assembleia da Organização Regional de Viseu do PCP - 24 de Maio...
Diaporama 10ª Assembleia da Organização Regional de Viseu do PCP - 24 de Maio...Diaporama 10ª Assembleia da Organização Regional de Viseu do PCP - 24 de Maio...
Diaporama 10ª Assembleia da Organização Regional de Viseu do PCP - 24 de Maio...Márcio Guerra
 
Tema 1 tic resumen
Tema 1 tic resumenTema 1 tic resumen
Tema 1 tic resumenalvaroosfc
 
NHC Central Caribbean Satellite Tropical Disturbance Rainfall Estimates
NHC Central Caribbean Satellite Tropical Disturbance Rainfall EstimatesNHC Central Caribbean Satellite Tropical Disturbance Rainfall Estimates
NHC Central Caribbean Satellite Tropical Disturbance Rainfall Estimatesnewsmiami
 
Grammar Review pt 2
Grammar Review pt 2Grammar Review pt 2
Grammar Review pt 2NISJeddah
 
Miten etsin töitä piilosta 20150526
Miten etsin töitä piilosta 20150526Miten etsin töitä piilosta 20150526
Miten etsin töitä piilosta 20150526Arja Parpala
 
Language Revision Sheet 2
Language Revision Sheet 2Language Revision Sheet 2
Language Revision Sheet 2NISJeddah
 
Persuasive Writing 1
Persuasive Writing 1Persuasive Writing 1
Persuasive Writing 1NISJeddah
 
User Centric Analytics - Omexpo
User Centric Analytics - Omexpo User Centric Analytics - Omexpo
User Centric Analytics - Omexpo Relevant Traffic
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven developmentKhanh Nguyen
 
Problem Solution Essay
Problem Solution EssayProblem Solution Essay
Problem Solution EssayNISJeddah
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentationruimermandaan
 
Audit Interne -Qualité
Audit Interne -QualitéAudit Interne -Qualité
Audit Interne -QualitéAmmari Farid
 

Destaque (15)

Diaporama 10ª Assembleia da Organização Regional de Viseu do PCP - 24 de Maio...
Diaporama 10ª Assembleia da Organização Regional de Viseu do PCP - 24 de Maio...Diaporama 10ª Assembleia da Organização Regional de Viseu do PCP - 24 de Maio...
Diaporama 10ª Assembleia da Organização Regional de Viseu do PCP - 24 de Maio...
 
Tema 1 tic resumen
Tema 1 tic resumenTema 1 tic resumen
Tema 1 tic resumen
 
NHC Central Caribbean Satellite Tropical Disturbance Rainfall Estimates
NHC Central Caribbean Satellite Tropical Disturbance Rainfall EstimatesNHC Central Caribbean Satellite Tropical Disturbance Rainfall Estimates
NHC Central Caribbean Satellite Tropical Disturbance Rainfall Estimates
 
W ek a
W ek aW ek a
W ek a
 
Grammar Review pt 2
Grammar Review pt 2Grammar Review pt 2
Grammar Review pt 2
 
Miten etsin töitä piilosta 20150526
Miten etsin töitä piilosta 20150526Miten etsin töitä piilosta 20150526
Miten etsin töitä piilosta 20150526
 
Language Revision Sheet 2
Language Revision Sheet 2Language Revision Sheet 2
Language Revision Sheet 2
 
Persuasive Writing 1
Persuasive Writing 1Persuasive Writing 1
Persuasive Writing 1
 
User Centric Analytics - Omexpo
User Centric Analytics - Omexpo User Centric Analytics - Omexpo
User Centric Analytics - Omexpo
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
Amarjit Resume
Amarjit ResumeAmarjit Resume
Amarjit Resume
 
Problem Solution Essay
Problem Solution EssayProblem Solution Essay
Problem Solution Essay
 
Bàsquet
BàsquetBàsquet
Bàsquet
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
Audit Interne -Qualité
Audit Interne -QualitéAudit Interne -Qualité
Audit Interne -Qualité
 

Semelhante a Find personnel stored procedure

Problem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdfProblem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdfebrahimbadushata00
 
Cassandra v3.0 at Rakuten meet-up on 12/2/2015
Cassandra v3.0 at Rakuten meet-up on 12/2/2015Cassandra v3.0 at Rakuten meet-up on 12/2/2015
Cassandra v3.0 at Rakuten meet-up on 12/2/2015datastaxjp
 
Internationalizing CakePHP Applications
Internationalizing CakePHP ApplicationsInternationalizing CakePHP Applications
Internationalizing CakePHP ApplicationsPierre MARTIN
 
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011Masahiro Nagano
 
Postgres can do THAT?
Postgres can do THAT?Postgres can do THAT?
Postgres can do THAT?alexbrasetvik
 
OpenWorld 2018 - Common Application Developer Disasters
OpenWorld 2018 - Common Application Developer DisastersOpenWorld 2018 - Common Application Developer Disasters
OpenWorld 2018 - Common Application Developer DisastersConnor McDonald
 
Credit Risk Assessment using Machine Learning Techniques with WEKA
Credit Risk Assessment using Machine Learning Techniques with WEKACredit Risk Assessment using Machine Learning Techniques with WEKA
Credit Risk Assessment using Machine Learning Techniques with WEKAMehnaz Newaz
 
Perforce Object and Record Model
Perforce Object and Record Model  Perforce Object and Record Model
Perforce Object and Record Model Perforce
 
Oracle Database 12c Application Development
Oracle Database 12c Application DevelopmentOracle Database 12c Application Development
Oracle Database 12c Application DevelopmentSaurabh K. Gupta
 
RELATIONAL DATABASES & Database designCIS276EmployeeNumFir.docx
RELATIONAL DATABASES & Database designCIS276EmployeeNumFir.docxRELATIONAL DATABASES & Database designCIS276EmployeeNumFir.docx
RELATIONAL DATABASES & Database designCIS276EmployeeNumFir.docxsodhi3
 
ETL for Pros: Getting Data Into MongoDB
ETL for Pros: Getting Data Into MongoDBETL for Pros: Getting Data Into MongoDB
ETL for Pros: Getting Data Into MongoDBMongoDB
 
Notes for SQLite3 Usage
Notes for SQLite3 UsageNotes for SQLite3 Usage
Notes for SQLite3 UsageWilliam Lee
 
PostgreSQL (2) by Aswin
PostgreSQL (2) by AswinPostgreSQL (2) by Aswin
PostgreSQL (2) by AswinAgate Studio
 
Tony jambu (obscure) tools of the trade for tuning oracle sq ls
Tony jambu   (obscure) tools of the trade for tuning oracle sq lsTony jambu   (obscure) tools of the trade for tuning oracle sq ls
Tony jambu (obscure) tools of the trade for tuning oracle sq lsInSync Conference
 

Semelhante a Find personnel stored procedure (20)

Codigos
CodigosCodigos
Codigos
 
Problem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdfProblem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdf
 
Cassandra v3.0 at Rakuten meet-up on 12/2/2015
Cassandra v3.0 at Rakuten meet-up on 12/2/2015Cassandra v3.0 at Rakuten meet-up on 12/2/2015
Cassandra v3.0 at Rakuten meet-up on 12/2/2015
 
Introduction to database
Introduction to databaseIntroduction to database
Introduction to database
 
Internationalizing CakePHP Applications
Internationalizing CakePHP ApplicationsInternationalizing CakePHP Applications
Internationalizing CakePHP Applications
 
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
Designing Opeation Oriented Web Applications / YAPC::Asia Tokyo 2011
 
Postgres can do THAT?
Postgres can do THAT?Postgres can do THAT?
Postgres can do THAT?
 
Sql subquery
Sql subquerySql subquery
Sql subquery
 
FMDB - SLC-Cocoaheads
FMDB - SLC-CocoaheadsFMDB - SLC-Cocoaheads
FMDB - SLC-Cocoaheads
 
Sql analytic queries tips
Sql analytic queries tipsSql analytic queries tips
Sql analytic queries tips
 
OpenWorld 2018 - Common Application Developer Disasters
OpenWorld 2018 - Common Application Developer DisastersOpenWorld 2018 - Common Application Developer Disasters
OpenWorld 2018 - Common Application Developer Disasters
 
Credit Risk Assessment using Machine Learning Techniques with WEKA
Credit Risk Assessment using Machine Learning Techniques with WEKACredit Risk Assessment using Machine Learning Techniques with WEKA
Credit Risk Assessment using Machine Learning Techniques with WEKA
 
Perforce Object and Record Model
Perforce Object and Record Model  Perforce Object and Record Model
Perforce Object and Record Model
 
Oracle Database 12c Application Development
Oracle Database 12c Application DevelopmentOracle Database 12c Application Development
Oracle Database 12c Application Development
 
RELATIONAL DATABASES & Database designCIS276EmployeeNumFir.docx
RELATIONAL DATABASES & Database designCIS276EmployeeNumFir.docxRELATIONAL DATABASES & Database designCIS276EmployeeNumFir.docx
RELATIONAL DATABASES & Database designCIS276EmployeeNumFir.docx
 
ETL for Pros: Getting Data Into MongoDB
ETL for Pros: Getting Data Into MongoDBETL for Pros: Getting Data Into MongoDB
ETL for Pros: Getting Data Into MongoDB
 
Notes for SQLite3 Usage
Notes for SQLite3 UsageNotes for SQLite3 Usage
Notes for SQLite3 Usage
 
Pdxpugday2010 pg90
Pdxpugday2010 pg90Pdxpugday2010 pg90
Pdxpugday2010 pg90
 
PostgreSQL (2) by Aswin
PostgreSQL (2) by AswinPostgreSQL (2) by Aswin
PostgreSQL (2) by Aswin
 
Tony jambu (obscure) tools of the trade for tuning oracle sq ls
Tony jambu   (obscure) tools of the trade for tuning oracle sq lsTony jambu   (obscure) tools of the trade for tuning oracle sq ls
Tony jambu (obscure) tools of the trade for tuning oracle sq ls
 

Find personnel stored procedure

  • 1. -- ============================================= -- Author: Simon Hoyle -- Create date: 23/4/2002 -- Description: Part 3 of personnel search procedure -- ============================================= ALTER PROCEDURE [dbo].[usp_FindP_ShowPersonnel] @lastname as nvarchar(30), @Discipline as nvarchar(50), @Discipline2 as nvarchar(50), @Discipline3 as nvarchar(50), @Discipline4 as nvarchar(50), @PrimaryRank as nvarchar(50), @Country as nvarchar(30), @OnshoreExperience bit, @OffshoreExperience bit, @HasContract as nvarchar(10), @PersonalDetails nvarchar(100), @PersonalDetails2 nvarchar(100), @Notes nvarchar(100), @ClientEnqNotes nvarchar(100), @ValidCertsOnly as smallint, @UserTag bit, @AvailableFrom as nvarchar(10), @DateAvailExcludeBlank bit, @DateAvailMonthLimit bit AS DECLARE @sqlstatement as nvarchar(2000), @TempFileIndex as nvarchar(1), @where as nvarchar(1000), @tempviewname as nvarchar(30), @StatusCompareType nvarchar(2), @LoopDone as int, @Include as smallint, @Status as nvarchar(20), @YesMatch as nvarchar(500), @NoMatch as nvarchar(500), @MatchString as nvarchar(600), @DateAvailFrom as datetime, @DateAvailTo as datetime -- -- Clear temp tables DELETE FROM USYS_FindPersonnel_Results1 WHERE TerminalID=HOST_ID() DELETE FROM USYS_FindPersonnel_Results2 WHERE TerminalID=HOST_ID() DELETE FROM USYS_FindPersonnel_Results3 WHERE TerminalID=HOST_ID() --
  • 2. -- Standard search, into USYS_FindPersonnel_Results1 EXEC usp_FindP_StdSearch @lastname, @Discipline, @Discipline2, @Discipline3, @Discipline4, @PrimaryRank, @Country, @OnshoreExperience, @OffshoreExperience SET @TempFileIndex = 1 -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- User tag search ? IF (@UserTag<>0) BEGIN -- If a tagged search, USYS_FindPersonnel will have been loaded with PersonnelID's of tagged records -- by frmFindPersonnel/ShowPersonnel. -- Copy standard search result matched with tagged to USYS_FindPersonnel_Results2 INSERT INTO USYS_FindPersonnel_Results2 (PersonnelID) SELECT USYS_FindPersonnel_Results1.PersonnelID FROM USYS_FindPersonnel_Results1 INNER JOIN USYS_FindPersonnel ON USYS_FindPersonnel_Results1.PersonnelID = USYS_FindPersonnel.PersonnelID WHERE USYS_FindPersonnel.TerminalID = host_id() -- Clear USYS_FindPersonnel_Results1 DELETE FROM USYS_FindPersonnel_Results1 WHERE TerminalID=HOST_ID() -- Copy back from USYS_FindPersonnel_Results2 to USYS_FindPersonnel_Results1 INSERT INTO USYS_FindPersonnel_Results1 (PersonnelID) SELECT PersonnelID FROM USYS_FindPersonnel_Results2 WHERE USYS_FindPersonnel_Results2.TerminalID = host_id() -- Clear USYS_FindPersonnel_Results2 DELETE FROM USYS_FindPersonnel_Results2 WHERE TerminalID=HOST_ID() END -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- AvailableDate?
  • 3. IF (Len(@AvailableFrom)> 0) -- YES, BEGIN IF (ISDATE(@AvailableFrom) = 1) BEGIN SET @DateAvailFrom = Cast(@AvailableFrom as datetime) -- IF (@DateAvailMonthLimit = 1) SET @DateAvailTo = DATEADD(m, 1, @DateAvailFrom) ELSE SET @DateAvailTo = DATEADD(m, 12, @DateAvailFrom) -- IF (@DateAvailExcludeBlank = 0) INSERT INTO USYS_FindPersonnel_Results2 (PersonnelID) SELECT USYS_FindPersonnel_Results1.PersonnelID FROM USYS_FindPersonnel_Results1 INNER JOIN tblPersonnel ON USYS_FindPersonnel_Results1.PersonnelID = tblPersonnel.PersonnelID WHERE USYS_FindPersonnel_Results1.TerminalID = host_id() AND ( (tblPersonnel.AvailableFrom BETWEEN @DateAvailFrom AND @DateAvailTo) OR (tblPersonnel.AvailableFrom IS NULL) ) ELSE INSERT INTO USYS_FindPersonnel_Results2 (PersonnelID) SELECT USYS_FindPersonnel_Results1.PersonnelID FROM USYS_FindPersonnel_Results1 INNER JOIN tblPersonnel ON USYS_FindPersonnel_Results1.PersonnelID = tblPersonnel.PersonnelID WHERE USYS_FindPersonnel_Results1.TerminalID = host_id() AND (tblPersonnel.AvailableFrom BETWEEN @DateAvailFrom AND
  • 4. @DateAvailTo) /*INSERT INTO USYS_FindPersonnel_Results2 (PersonnelID) SELECT USYS_FindPersonnel_Results1.PersonnelID FROM USYS_FindPersonnel_Results1 INNER JOIN tblPersonnel ON USYS_FindPersonnel_Results1.PersonnelID = tblPersonnel.PersonnelID WHERE USYS_FindPersonnel_Results1.TerminalID = host_id() AND ( (tblPersonnel.AvailableFrom <= Cast(@AvailableFrom as datetime)) OR (tblPersonnel.AvailableFrom IS NULL) )*/ -- Clear USYS_FindPersonnel_Results1 DELETE FROM USYS_FindPersonnel_Results1 WHERE TerminalID=HOST_ID() -- Copy back from USYS_FindPersonnel_Results2 to USYS_FindPersonnel_Results1 INSERT INTO USYS_FindPersonnel_Results1 (PersonnelID) SELECT PersonnelID FROM USYS_FindPersonnel_Results2 WHERE USYS_FindPersonnel_Results2.TerminalID = host_id() -- Clear USYS_FindPersonnel_Results2 DELETE FROM USYS_FindPersonnel_Results2 WHERE TerminalID=HOST_ID() END END -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- HasContract? IF (Len(@HasContract)> 0) -- YES, BEGIN IF (ISDATE(@HasContract) = 1) BEGIN
  • 5. INSERT INTO USYS_FindPersonnel_Results2 (PersonnelID) SELECT UFPR.PersonnelID FROM USYS_FindPersonnel_Results1 AS UFPR INNER JOIN tblContract AS C ON UFPR.PersonnelID = C.SubcontractorID WHERE (UFPR.TerminalID = HOST_ID()) AND (C.StartDate >= CAST(@HasContract AS datetime)) -- Clear USYS_FindPersonnel_Results1 DELETE FROM USYS_FindPersonnel_Results1 WHERE TerminalID=HOST_ID() -- Copy back from USYS_FindPersonnel_Results2 to USYS_FindPersonnel_Results1 INSERT INTO USYS_FindPersonnel_Results1 (PersonnelID) SELECT PersonnelID FROM USYS_FindPersonnel_Results2 WHERE USYS_FindPersonnel_Results2.TerminalID = host_id() -- Clear USYS_FindPersonnel_Results2 DELETE FROM USYS_FindPersonnel_Results2 WHERE TerminalID=HOST_ID() END END -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- Text search in tblPersonnnel ? IF ((Len(@PersonalDetails)>1) OR (Len(@PersonalDetails2)>1) OR (Len(@Notes)>1)) BEGIN EXEC usp_FindP_TextSearch @PersonalDetails, @PersonalDetails2, @Notes END -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- Text search in tblClientEnqPersNotes? IF (Len(@ClientEnqNotes)>1) BEGIN EXEC usp_FindP_TextSearch_CEPN @ClientEnqNotes END
  • 6. -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- Are there any Certification requirements? IF EXISTS (SELECT TerminalID FROM USYS_CertSelect WHERE (TerminalID = HOST_ID()) AND (USYS_CertSelect.Include <> 0)) -- YES, use USYS_CertSelect to filter into USYS_FindPersonnel_Results2 BEGIN IF (@ValidCertsOnly<>0) SET @tempviewname = 'viewFindPers_CertValidUnique' ELSE SET @tempviewname = 'viewFindPers_CertsUnique' -- EXEC usp_FindP_MakeCertsWhere @tempviewname, @TempFileIndex, @where OUTPUT SET @sqlstatement = 'INSERT INTO USYS_FindPersonnel_Results' + Cast((@TempFileIndex + 1) as varchar) + ' (PersonnelID) SELECT ' + @tempviewname + '.PersonnelID FROM USYS_FindPersonnel_Results' + Cast(@TempFileIndex as varchar) + ' LEFT OUTER JOIN ' + @tempviewname + ' ON USYS_FindPersonnel_Results' + Cast(@TempFileIndex as varchar)+ '.PersonnelID = ' + @tempviewname + '.PersonnelID WHERE ' + @where EXEC sp_executesql @sqlstatement --INSERT USYS_MSG VALUES (Cast(@sqlstatement as nvarchar(1000))) --INSERT USYS_MSG VALUES (Cast( 'Called sp_executesql (Certs)- Error status=' + Cast(@@Error as char) as nvarchar(1000))) SET @TempFileIndex = @TempFileIndex + 1 END -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- -- Are there any Status requirements? IF EXISTS (SELECT TerminalID FROM USYS_StatusSelect WHERE (TerminalID = HOST_ID()) AND (Include <> 0)) -- YES, use USYS_StatusSelect to filter USYS_FindPersonnel_Results2 to USYS_FindPersonnel_Results3 BEGIN -- Create temp tables for include and exclude
  • 7. enties SELECT Status INTO #includestatus FROM dbo.USYS_StatusSelect WHERE (Include > 0) AND (TerminalID = HOST_ID()) -- SELECT Status INTO #excludestatus FROM dbo.USYS_StatusSelect WHERE (Include < 0) AND (TerminalID = HOST_ID()) -- -- Build action query SET @sqlstatement = '' -- IF Exists (SELECT * FROM #includestatus) SET @sqlstatement = '(P.Status IN (SELECT Status FROM #includestatus))' -- IF Exists (SELECT * FROM #excludestatus) BEGIN IF (Len(@sqlstatement) > 0) SET @sqlstatement = @sqlstatement + ' AND ' -- SET @sqlstatement = @sqlstatement + '(P.Status NOT IN (SELECT Status FROM #excludestatus))' END -- SET @sqlstatement = 'INSERT INTO USYS_FindPersonnel_Results' + Cast((@TempFileIndex + 1) as varchar) + ' (PersonnelID) SELECT P.PersonnelID FROM dbo.tblPersonnel AS P ' + 'RIGHT OUTER JOIN dbo.USYS_FindPersonnel_Results' + Cast(@TempFileIndex as varchar) + ' AS U ' + 'ON P.PersonnelID = U.PersonnelID ' + 'WHERE ((U.TerminalID = HOST_ID()) AND ' + @sqlstatement + ')' -- --INSERT USYS_MSG VALUES (@sqlstatement) -- EXEC sp_executesql @sqlstatement SET @TempFileIndex = @TempFileIndex + 1 END -- -- Ensure result in dbo.USYS_FindPersonnel_Results5 IF (@TempFileIndex < 3) BEGIN
  • 8. -- Move result SET @sqlstatement = 'INSERT INTO USYS_FindPersonnel_Results3 (PersonnelID) SELECT PersonnelID FROM dbo.USYS_FindPersonnel_Results' + Cast(@TempFileIndex as varchar) + ' WHERE TerminalID = HOST_ID()' EXEC sp_executesql @sqlstatement --select @sqlstatement END -- -- Return recordset size SELECT COUNT(PersonnelID) AS CountOfRecordset FROM USYS_FindPersonnel_Results3 WHERE TerminalID = HOST_ID()