首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql提示语法异常

2012-06-06 
sql提示语法错误SQL codeEXEC(SELECT vvm.*,dbo.GetBidPublish(vvm.TvaID,+CAST(@StartDateTime AS VA

sql提示语法错误

SQL code
EXEC     ('         SELECT vvm.*,                 dbo.GetBidPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR)+''','''+CAST(@EndDateTime AS VARCHAR)+''') AS BidPublishNum,                 dbo.BuyerPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR)+''','''+CAST(@EndDateTime AS VARCHAR)+''') AS BuyerPublishNum,                                                                                                  dbo.AttentionPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR)+''','''+CAST(@EndDateTime AS VARCHAR)+''') AS AttentionPublishNum,                TradeOrder.TradeAmount,                TradeOrder.Sevice_Pay,                TradeOrder.Sevice_NotPay,                TradeOrder.LogisticsFee,                TradeOrder.TransferFee,                     dbo.GetTradeSuccessPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR)+''','''+CAST(@EndDateTime AS VARCHAR)+''') AS TradeSuccessPublishNum,                 dbo.GetAppealPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR)+''','''+CAST(@EndDateTime AS VARCHAR)+''') AS AppealedPublishNum         FROM V_VendorManager vvm          LEFT JOIN (SELECT * FROM dbo.GetVendorTradeData('''+CAST(@StartDateTime AS VARCHAR)+''','''+CAST(@EndDateTime AS VARCHAR)+''')) AS TradeOrder         ON vvm.TvaID=TradeOrder.BuyerTvaId     ')


提示错误:'CAST' 附近有语法错误。 我确实找不到哪错了,请大神指点

[解决办法]
SQL code
declare @StartDatetime datetimedeclare @EndDateTime datetimedeclare @sql varchar(max)set @sql='         SELECT vvm.*,                 dbo.GetBidPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR(20))+''','''+CAST(@EndDateTime AS VARCHAR(20))+''') AS BidPublishNum,                 dbo.BuyerPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR(20))+''','''+CAST(@EndDateTime AS VARCHAR(20))+''') AS BuyerPublishNum,                                                                                                  dbo.AttentionPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR(20))+''','''+CAST(@EndDateTime AS VARCHAR(20))+''') AS AttentionPublishNum,                TradeOrder.TradeAmount,                TradeOrder.Sevice_Pay,                TradeOrder.Sevice_NotPay,                TradeOrder.LogisticsFee,                TradeOrder.TransferFee,                     dbo.GetTradeSuccessPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR(20))+''','''+CAST(@EndDateTime AS VARCHAR(20))+''') AS TradeSuccessPublishNum,                 dbo.GetAppealPublish(vvm.TvaID,'''+CAST(@StartDateTime AS VARCHAR(20))+''','''+CAST(@EndDateTime AS VARCHAR(20))+''') AS AppealedPublishNum         FROM V_VendorManager vvm          LEFT JOIN (SELECT * FROM dbo.GetVendorTradeData('''+CAST(@StartDateTime AS VARCHAR(20))+''','''+CAST(@EndDateTime AS VARCHAR(20))+''')) AS TradeOrder         ON vvm.TvaID=TradeOrder.BuyerTvaId     'exec (@sql)
[解决办法]
SQL code
declare @StartDatetime datetimeset @StartDatetime=getdate()select convert(varchar(10),@StartDateTime,120)/*2012-06-05*/--1\转时间格式建议使用convert--2\在外面拼接后,统一exec 

热点排行