ja-rek
asked on
convert select query to function / stored procedure (T-SQL)
Dear Experts,
I have some knowledge of T-SQL.
I have created a select query which suits my needs.
However, I would like to convert this select query to function / stored procedure (?)
and pass @dzien as variable so that I can call it from e.g.
Visual Basic in Excel or even join with other tables.
Something like
1.
{CALL dbo.returnmyview (2015-01-01)}
or better
2. select * from dbo.returnmyview (2015-01-01) join XXXXX
I am sorry for my crazy syntax but I hope you get the point.
The select query has been uploaded here:
http://www78.zippyshare.com/v/askruGQ6/file.html
thank you in advance!
best regards
Jarek
I have some knowledge of T-SQL.
I have created a select query which suits my needs.
However, I would like to convert this select query to function / stored procedure (?)
and pass @dzien as variable so that I can call it from e.g.
Visual Basic in Excel or even join with other tables.
Something like
1.
{CALL dbo.returnmyview (2015-01-01)}
or better
2. select * from dbo.returnmyview (2015-01-01) join XXXXX
I am sorry for my crazy syntax but I hope you get the point.
The select query has been uploaded here:
http://www78.zippyshare.com/v/askruGQ6/file.html
thank you in advance!
best regards
Jarek
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I recommend against a tvf, as the Query Compiler can't incorporate table-valued functions into a query plan, so execution will be off.
Explain why you need it.
Explain why you need it.
You need to use an in-line table-valued function, not a multi-line TVF.
Please post the actual code so that such a function can be written.
But just post the query directly. NO chance I'm downloading anything from a site with that many flashing colors!!
Please post the actual code so that such a function can be written.
But just post the query directly. NO chance I'm downloading anything from a site with that many flashing colors!!
ASKER
Hello and thanks for help!
why I need it?
a pro would find a more efficient workaround, but for me the possibility to use select instead of exec is more convenient.
the table/database is rather small and I don't think I will suffer from a loss in speed (it this troubles you).
declare @dzien DATETIME --@dzien is my parameter that I want to pass
set @dzien = {ts '2015-01-31 00:00:00'}
select
PRE_Kod,
PRE_Imie1,
PRE_Nazwisko,
dkm_nazwa,
PRE_DataUr,
PRE_Plec,
left(pre_kategoriaopis, 2) CAT,
CAST (pre_etaetatl as decimal) / CAST (pre_etaetatm as decimal) MANYEARS,
case when pra_parentid is null then 1 else 0 end HEADCOUNT,
case when PRE_ZatrudnionyDo< {ts '2999-12-31 00:00:00'} then 1 else 0 end TEMPORARIES,
PRE_MLDWojewodztwo,
PRE_ETAStawka,
PRE_ETAWymiar,
PRE_DataOd,
PRE_DataDo,
PRE_ZatrudnionyOd,
PRE_ZatrudnionyDo
from cdn.pracetaty
JOIN CDN.Pracidx ON PRI_PraId = PRE_PraId
join cdn.prackod on pra_praid = pre_praid
left join cdn.DaneKadMod on DKM_DkmId = PRE_ETADkmIdStanowisko
where pri_typ = 1
and PRE_DataOd<@dzien and (PRE_DataDo is null or PRE_DataDo>=@dzien)
and PRE_ZatrudnionyOd<@dzien and (PRE_ZatrudnionyDo>=@dzien or PRE_ZatrudnionyDo is null)
why I need it?
a pro would find a more efficient workaround, but for me the possibility to use select instead of exec is more convenient.
the table/database is rather small and I don't think I will suffer from a loss in speed (it this troubles you).
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I've requested that this question be closed as follows:
Accepted answer: 300 points for ScottPletcher's comment #a40599570
Assisted answer: 200 points for Jim Horn's comment #a40599506
Assisted answer: 0 points for ja-rek's comment #a40599564
for the following reason:
thanks a lot for help! :)
Accepted answer: 300 points for ScottPletcher's comment #a40599570
Assisted answer: 200 points for Jim Horn's comment #a40599506
Assisted answer: 0 points for ja-rek's comment #a40599564
for the following reason:
thanks a lot for help! :)
ASKER
thanks a lot for help! :)
ASKER
thanks a lot - that works!
that's the simpler version, can you please convert it to version 2? (as I have it described in my question)
so that I can use join, union etc on the output, something like
select * from dbo.returnmyview (2015-01-01) join XXXXX
Jarek