日期:2014-05-18  浏览次数:20441 次

SQL,动态打印。
SQL code

DECLARE @TableName VARCHAR(50),@Sql NVARCHAR(MAX),@OrderID int , @a varchar(100)
SET @TableName = 'Orders';
SET @OrderID=10251;
SET @a = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = @OrderID ORDER BY ORDERID DESC'
SET @Sql = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = '+CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC'
PRINT @a
PRINT @Sql


SELECT * FROM [Orders]WHERE OrderID = @OrderID ORDER BY ORDERID DESC
SELECT * FROM [Orders]WHERE OrderID = 10251 ORDER BY ORDERID DESC

中间为啥要将变量转换一下。




------解决方案--------------------
SET @a 这个 你这样写 相当于拼接字符串了,就跟.cs文件中 拼接字符串一样。
这样说明白么?
------解决方案--------------------
因为动态的是字符型,你现在的@OrderID是int型,会报类型错误,必须转换成varchar型或nvarchar型等字符型。