03. juli 2005 - 21:48
Der er
12 kommentarer og 1 løsning
Kan man lave en IF i en query?
Jeg ønsker at hente noget fra databasen, men hvis der ikke retuneres noget, skal der så returners et enkelt felt med teksten "Intet" Hvordan gøres det. - Kan det gøres med en query?
Annonceindlæg fra DE-CIX
du kan ikke gøre det på rækker men på felt værdier kan du godt gøre det SELECT ISNULL(felt,'Værdien var NULL') FROM tabel
ok. Man kan hellerikke lave noget med stored procedures?
jo du kan vel altid lave en DECLARE @n INTEGER SET @n = (SELECT COUNT(*) FROM tabel WHERE bla bla) IF @n > 0 BEGIN SELECT felt FROM tabel WHERE bla bla END ELSE BEGIN SELECT 'ha ha der er ingen rækker' END men var det ikke nemmere at lave det i din applikation ??
jov det kan du have ret i. Men jeg kunne ikke lige finde den proberty der viser antallet af rækker i et dataset, of så har jeg ofte haft lyst til at iffe i en query. Men dette ser spændende ud - kom med et svar.
sidste ting. Kan man sende en var med fra client til stored pro...
ja da hvilket sprog og hvilket database API ?
C# og sqlconnection i VS hvad den så bruger
03. juli 2005 - 22:39
#10
using System; using System.Data; using System.Data.SqlClient; class MainClass { public static void Main(string[] args) { SqlConnection con = new SqlConnection("server=ARNEPC2;Integrated Security=SSPI;database=Test"); con.Open(); SqlCommand cmd = new SqlCommand("TEST_OUTRSRET", con); cmd.CommandType = CommandType.StoredProcedure; SqlParameter prm = new SqlParameter("@outarg", SqlDbType.Int, 0, "outarg"); prm.Direction = ParameterDirection.Output; cmd.Parameters.Add(prm); SqlParameter ret = new SqlParameter("@retval", SqlDbType.Int); ret.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(ret); SqlDataReader rdr = cmd.ExecuteReader(); while(rdr.Read()) { Console.WriteLine(rdr[0] + " " + rdr[1]); } rdr.Close(); Console.WriteLine((int)cmd.Parameters["@outarg"].Value); Console.WriteLine((int)cmd.Parameters["@retval"].Value); con.Close(); } }
03. juli 2005 - 22:39
#11
CREATE PROCEDURE TEST_OUTRSRET @outarg INTEGER OUTPUT AS SELECT @outarg = 123 SELECT * FROM T1 RETURN 456 GO
03. juli 2005 - 22:41
#12
øv - dårligt eksempel - det var en out arg her kommer en in arg: using System; using System.Data; using System.Data.SqlClient; class MainClass { public static void Main(string[] args) { SqlConnection con = new SqlConnection("server=ARNEPC2;Integrated Security=SSPI;database=master"); con.Open(); SqlCommand cmd = new SqlCommand("sp_databases", con); cmd.CommandType = CommandType.StoredProcedure; SqlDataReader rdr = cmd.ExecuteReader(); while(rdr.Read()) { string dbnam = (string)rdr[0]; Console.WriteLine("Database=" + dbnam); SqlConnection con2 = new SqlConnection("server=ARNEPC2;Integrated Security=SSPI;database=" + dbnam); con2.Open(); SqlCommand cmd2 = new SqlCommand("sp_tables", con2); cmd2.CommandType = CommandType.StoredProcedure; cmd2.Parameters.Add("@table_type", "'TABLE'"); SqlDataReader rdr2 = cmd2.ExecuteReader(); while(rdr2.Read()) { string tblnam = (string)rdr2[2]; Console.WriteLine(dbnam + " " + tblnam); } con2.Close(); } con.Close(); } } du skal ned til sp_tables kaldet
03. juli 2005 - 22:41
#13
Fedt nok. - Tak.
Computerworld tilbyder specialiserede kurser i database-management