Ahoj, prosím o radu. Mám v MSSQL vlastní funkce (Functions), které vyhledají data v databázi s návratovou hodnotou True / False.
Jak tyto funkce mohu z .NET zavolat? Předem děkuji
Fórum › .NET
Volíní SQL funkcí v .NET
Pomocí select dotazu:
SELECT * FROM dbo.MojeFunkce()
velurex napsal:
http://www.java2s.com/Tutorial/CSharp/0560__ADO.Net/ExecuteScalarExample.htm
Tak to asi není to co jsem hledal. Moc se mi nedaří vytvořit jednoduché funkční řešení, kdy mám formulář se dvěmi poli. Po odeslání tyto dvě hodnoty předám do funkce na SQL a vrátím do formuláře výsledek o shodě či nikoliv. Byl by někdo ochoten mi s tím pomoci? Předem děkuji
Nemyslel jsi to takhle nějak?
var _connection = connection; // ...
SqlCommand cmd =SqlCommand("SELECT ScalarFunction(@prvni, @druhy) as blabla;", _connection); // vlastni query
cmd.Parameters.Add("@prvni", SqlDbType.NVarChar).Value = "ahoj"; // parametr jedna co tam posilam
cmd.Parameters.Add("@druhy", SqlDbType.NVarChar).Value = "světe"; // parametr dva
bool jaktotedaje = (bool)cmd.ExecuteScalar(); // scalar - vrátí první
Totiž ta Query co psal Chrasty je jen pro table-value funkce - funkce ktera vrátí celou tabulku. Pozor ale:
Ty jsi ale psal "které vyhledají data v databázi s návratovou hodnotou True / False." což je trošinku zavádějící :-/
Pokud má fce návratovou hodnotu třeba BIT (tzn právě true nebo false) nebo jakoukoliv jinou - za předpokladu že je jen jedna jediná - mluvíme o "skalárních (ang Scalar) funkcích" a ty se volají jak jsem ti napsal v příkladě ( select fce(); ). Podle tvého popisu jsem napoprvé pochopil že takovou fci máš, kupříkladu kontroluje zda jsou data třeba přítomná a vrátí "ano, tenhle záznam tu je/ne, záznam tu není." nebo tak.
Pokud ovšem jsi chtěl říct "tabulku s hodnotamy true nebo false" - "table-valued funkci" (tedy těch true / false bude třeba milion) tak k vlastní fci skutečně přistupuješ jako k tabulce a voláš nad ní select jako nad jakoukoliv "fyzickou" a platí přesně to co napsal Chrasty.
Nejlepší by bylo kdyby jsi sem poslal tu svou db fci ať na to můžem mrknout.
Edit: Jéééé, tímhle postem level myška! :D
Trošičku posthunt (už jsem myška! :D ), ale k věci:
Skalární fce vypadá nějak třeba takhle:
CREATE FUNCTION dbo.ScalarFunction()
RETURNS BIT
AS
BEGIN
RETURN 1
END
Tahle je hodně triviální, vrátí jen true :)
Query na ní bude "select dbo.ScalarFunction() as vzdyTrue;"
Table-valued funkce vrátí celou tabulku a vypadá kupříkladu takhle:
CREATE FUNCTION dbo.DataProTiskFaktury (@idFaktury int)
RETURNS TABLE
AS
RETURN SELECT Faktury.id, Faktury.datum, Faktury.splatnost, Polozky_objednavky.mnozstvi,
Zakaznici.jmeno, Zakaznici.prijmeni, Zakaznici.ulice, Zakaznici.cp, Zakaznici.mesto,
Zakaznici.PSC, Kvetiny.rodovy_nazev, Kvetiny.druhovy_nazev, Kvetiny.jednotka_mnozstvi, Kvetiny.cena
FROM Faktury INNER JOIN
Objednavky ON Faktury.objednavka = Objednavky.id INNER JOIN
Polozky_objednavky ON Objednavky.id = Polozky_objednavky.id_objednavky INNER JOIN
Zakaznici ON Objednavky.zakaznik = Zakaznici.id INNER JOIN
Kvetiny ON Polozky_objednavky.zbozi = Kvetiny.id
WHERE (Faktury.id = @idFaktury);
Na tuhle bude query "select * from dbo.DataProTiskFaktury(1);" (je z jednoho hodně starého projektu do školy)
Pak jsou ještě inline fce ale přiznám se že těm moc nerozumím.
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 12 hostů
Podobná vlákna
Tutorial na asp.net + ms sql — založil vitamin
ASP.NET - zachycení sql exception — založil HoriciKer
Hledáme šikovného web developera (C#, .NET, MS SQL) — založil PUXdesign
Hledáme zkušeného programátora ASP.NET (C#) + MS SQL (až 60.000 Kč) — založil Daniel Frouz
Potrebuji (praxi) na letni prazdniny, ASP.NET, C#, (X)HTML, CSS, MS… — založil PoliMerMath
Moderátoři diskuze