Försöker bygga upp en dynamisk stored procedure och får fel på den koden nedan när jag försöker köra den. Någon som har ett förslag? Har du prövat att köra en select på (@SelectClause + @FromClause + @WhereClause) för att se hur din fråga blir? Det är lättare att se om det är något litet fel då. Det kan inte vara så att du glömt ett mellanslag, t.ex. i slutet av FROM-satsen? En liten sak är att i din @WhereClause så har du inget inledande mellanslag i strängen. Hejsan och tack för snabba svar. Har testat att lägga in manuella mellanslag och testade med att köra select. Tyvärr får jag samma felmeddelande Allting funkar bra tills jag lägger till where: det fungerar med convert(varchar, @Datum1) :)Syntax error converting datetime from character string.
<code>
Declare @SelectClause Varchar(8000),@FromClause varchar(8000),@WhereClause varchar(8000), @Datum1 datetime, @Datum2 datetime, @Status Varchar(20), @SupplierID int
Set @Datum1 = DateDiff(M, -1, GetDate())
Set @Datum2 = GetDate()
Set @Status = '17,18,19'
Set @SupplierID = -1
Set @Debug = 1
Set @SelectClause = 'Select Sum(CUSTOMOrders.OrderCostPriceSum) As TotTotExl'
Set @FromClause = ' From CUSTOMOrders, BCCustomers, Units, Users'
If(@SupplierID <> -1)
If(@SupplierID = 1)
Set @FromClause = @FromClause + ', CUSTOMOrderArticles, CUSTOMArticles'
Else If(@SupplierID = 2)
Set @FromClause = @FromClause + ', CUSTOMUnspecifiedArticles'
Else
Set @FromClause = @FromClause + ', CUSTOMOrderSpares, CUSTOMFolderTypes, CUSTOMSubFolders, CUSTOMFolders'
Set @WhereClause = 'Where (CUSTOMOrders.CreatedDate Between ''' + @Datum1 + ''' And ''' + @Datum2 + ''')'
EXEC (@SelectClause + @FromClause + @WhereClause)
</code>Sv: Syntax error converting datetime from character string.
Sv: Syntax error converting datetime from character string.
För att göra det idiotsäkert kan du göra om din dynamiska slutkläm som
<code>
EXEC (@SelectClause + ' ' + @FromClause + ' ' + @WhereClause)
</code>Sv:Syntax error converting datetime from character string.
Sv: Syntax error converting datetime from character string.
<code>
Declare @SelectClause Varchar(8000),@FromClause varchar(8000),@WhereClause varchar(8000), @SupplierID int, @Datum1 datetime, @Datum2 datetime, @Status Varchar(20)
Set @SupplierID = -1
Set @Datum1 = DateDiff(M, -1, GetDate())
Set @Datum2 = GetDate()
Set @Status = '17,18,19'
Set @SelectClause = 'Select Sum(CUSTOMOrders.OrderCostPriceSum) As TotTotExl'
Set @FromClause = ' From CUSTOMOrders, BCCustomers, Units, Users'
If(@SupplierID <> -1)
If(@SupplierID = 1)
Set @FromClause = @FromClause + ', CUSTOMOrderArticles, CUSTOMArticles'
Else If(@SupplierID = 2)
Set @FromClause = @FromClause + ', CUSTOMUnspecifiedArticles'
Else
Set @FromClause = @FromClause + ', CUSTOMOrderSpares, CUSTOMFolderTypes, CUSTOMSubFolders, CUSTOMFolders'
Set @WhereClause = ' Where (CUSTOMOrders.CreatedDate Between ''' + @Datum1 + ''' And ''' + @Datum2 + ''') And (Status In ''' + @Status + ''')'
Select @SelectClause + ' ' + @FromClause As Test</code>Sv:Syntax error converting datetime from character string.