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 @aPRINT @SqlSELECT * FROM [Orders]WHERE OrderID = @OrderID ORDER BY ORDERID DESCSELECT * FROM [Orders]WHERE OrderID = 10251 ORDER BY ORDERID DESC中间为啥要将变量转换一下。
[解决办法]
SET @a 这个 你这样写 相当于拼接字符串了,就跟.cs文件中 拼接字符串一样。
这样说明白么?
[解决办法]
因为动态的是字符型,你现在的@OrderID是int型,会报类型错误,必须转换成varchar型或nvarchar型等字符型。