Gör en utsökning mha en Lagrad Procedur, men jag får dessa felmesset hela tiden!!
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string.
default.asp, line 116
Min SP ser ut som följande:
CREATE PROCEDURE sp_GetLunch
@datum nvarchar(50), [b]<-- Har provat datetime men det funkar inte[/b]
@matratt nvarchar(50),
@pris_topp nvarchar(5),
@pris_botten nvarchar(5),
@matratt_typid nvarchar(5),
@restaurang_typid nvarchar(5),
@restaurang_id nvarchar(5)
AS
DECLARE @WherePrinted int
DECLARE @SQLString nvarchar(4000)
DECLARE @SQLSelectFrom nvarchar(3000)
DECLARE @SQLWhereClause nvarchar(1000)
/*SET @datum = '2002-02-02 00:00:00'
SET @matratt = 'K'
SET @pris_topp = ''
SET @pris_botten = ''
SET @matratt_typid = '1'
SET @restaurang_typid = ''*/
SET @WherePrinted = 0
SET @SQLWhereClause = ''
SET @SQLSelectFrom = 'SELECT Restaurang.RestaurangId, RestaurangMatratt.Tillbehor5, RestaurangMatratt.Tillbehor4, RestaurangMatratt.Tillbehor3, RestaurangMatratt.Tillbehor2,
RestaurangMatratt.Tillbehor1, RestaurangMatratt.AvhamtningsPris, RestaurangMatratt.Pris, RestaurangMatratt.MatrattTypId,
RestaurangMatratt.Matratt, RestaurangMatratt.Datum, Foretag.Namn, Foretag.ForetagsId, MatrattTyp.Namn AS [Maträtttyp namn],
Restaurangtyp.Namn AS [Restaurangtyp namn], Restaurangtyp.RestaurangtypId, MatrattTyp.MatrattTypId
FROM Restaurang INNER JOIN
RestaurangMatratt ON Restaurang.RestaurangId = RestaurangMatratt.RestaurangId INNER JOIN
RestaurangTyper ON Restaurang.RestaurangId = RestaurangTyper.RestaurangId INNER JOIN
Restaurangtyp ON RestaurangTyper.RestaurangtypId = Restaurangtyp.RestaurangtypId INNER JOIN
MatrattTyp ON RestaurangMatratt.MatrattTypId = MatrattTyp.MatrattTypId INNER JOIN
Foretag ON Restaurang.ForetagsId = Foretag.ForetagsId'
IF (@datum) IS NOT NULL AND (@datum) <> ''
BEGIN
IF (@WherePrinted) = 0
BEGIN
SET @WherePrinted = 1
SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
END
ELSE
SET @SQLWhereClause = @SQLWhereClause + ' AND '
SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.Datum = CONVERT(DATETIME, '''+ @datum + ''', 102)) '
END
IF (@matratt) IS NOT NULL AND (@matratt) <> ''
BEGIN
IF (@WherePrinted) = 0
BEGIN
SET @WherePrinted = 1
SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
END
ELSE
SET @SQLWhereClause = @SQLWhereClause + ' AND '
SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.Matratt LIKE '''+ @matratt+'%'')'
END
IF (@pris_topp) IS NOT NULL AND (@pris_botten) IS NOT NULL AND (@pris_topp) <> '' AND (@pris_botten) <> ''
BEGIN
IF (@WherePrinted) = 0
BEGIN
SET @WherePrinted = 1
SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
END
ELSE
SET @SQLWhereClause = @SQLWhereClause + ' AND '
SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.Pris BETWEEN ' + @pris_botten + ' AND ' + @pris_topp + ')'
END
IF (@matratt_typid) IS NOT NULL AND (@matratt_typid) <> ''
BEGIN
IF (@WherePrinted) = 0
BEGIN
SET @WherePrinted = 1
SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
END
ELSE
SET @SQLWhereClause = @SQLWhereClause + ' AND '
SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.MatrattTypId = ' + @matratt_typid + ')'
END
IF (@restaurang_typid) IS NOT NULL AND (@restaurang_typid) <> ''
BEGIN
IF (@WherePrinted) = 0
BEGIN
SET @WherePrinted = 1
SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
END
ELSE
SET @SQLWhereClause = @SQLWhereClause + ' AND '
SET @SQLWhereClause = @SQLWhereClause + ' (Restaurangtyp.RestaurangtypId = ' + @restaurang_typid + ')'
END
IF (@restaurang_id) IS NOT NULL AND (@restaurang_id) <> ''
BEGIN
IF (@WherePrinted) = 0
BEGIN
SET @WherePrinted = 1
SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
END
ELSE
SET @SQLWhereClause = @SQLWhereClause + ' AND '
SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.RestaurangId = ' + @restaurang_id + ')'
END
SET @SQLString = @SQLSelectFrom + ' ' + @SQLWhereClause
--PRINT @SQLString
EXEC sp_executesql @SQLString
GO
Hoppas jag an få lite HILFE här.. ;)
THX!