T-SQL表名与字符串和@parameter连接
我想在@sql执行之前对其进行计数。但我无法将表名与参数值连接起来 SQL:T-SQL表名与字符串和@parameter连接,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想在@sql执行之前对其进行计数。但我无法将表名与参数值连接起来 SQL: 如何做到这一点?只需将@sql参数中的所有内容作为 declare @sql navarchar(max) set @sql = 'declare @count int SET @count = (SELECT count(*) as tblcount FROM RDL_tbl_UserManagement_UserInfo_'+@table_prefix_name+' WHERE partnerID='+cast
如何做到这一点?只需将@sql参数中的所有内容作为
declare @sql navarchar(max)
set @sql =
'declare @count int
SET @count = (SELECT count(*) as tblcount FROM RDL_tbl_UserManagement_UserInfo_'+@table_prefix_name+' WHERE partnerID='+cast(@partnerID as varchar)+' AND userID='+cast(@adminUserID as varchar)+' AND addressType=''H'')
IF @count = 0
BEGIN
SELECT * FROM RDL_tbl_UserManagement_UserInfo_'+@table_prefix_name+' WHERE partnerID='+cast(@partnerID as varchar)+' and userID='+cast(@adminUserID as varchar)+' AND addressType=''MZ'' ORDER BY company
END
ELSE
BEGIN
SELECT * FROM RDL_tbl_UserManagement_UserInfo_'+@table_prefix_name+' WHERE partnerID='+cast(@partnerID as varchar)+' and userID='+cast(@adminUserID as varchar)+' AND addressType=''H'' ORDER BY company
END
'
Exec sp_executesql @sql
也许是动态SQL?然而,可能有更好的选择您应该始终为在
CAST
或CONVERT
语句中使用的任何varchar
提供长度!
declare @sql navarchar(max)
set @sql =
'declare @count int
SET @count = (SELECT count(*) as tblcount FROM RDL_tbl_UserManagement_UserInfo_'+@table_prefix_name+' WHERE partnerID='+cast(@partnerID as varchar)+' AND userID='+cast(@adminUserID as varchar)+' AND addressType=''H'')
IF @count = 0
BEGIN
SELECT * FROM RDL_tbl_UserManagement_UserInfo_'+@table_prefix_name+' WHERE partnerID='+cast(@partnerID as varchar)+' and userID='+cast(@adminUserID as varchar)+' AND addressType=''MZ'' ORDER BY company
END
ELSE
BEGIN
SELECT * FROM RDL_tbl_UserManagement_UserInfo_'+@table_prefix_name+' WHERE partnerID='+cast(@partnerID as varchar)+' and userID='+cast(@adminUserID as varchar)+' AND addressType=''H'' ORDER BY company
END
'
Exec sp_executesql @sql
declare @count int
SET @sql = 'SELECT @count =count(*)
FROM RDL_tbl_UserManagement_UserInfo_'+@table_prefix_name +'
WHERE partnerID = CAST(@partnerID AS VARCHAR)
AND userID = CAST(@adminUserID AS VARCHAR)
AND addressType = ''H'')'
EXEC sp_executesql @sql, N'@count int OUTPUT',
@count OUTPUT
IF @count = 0
BEGIN
SET @sql = 'SELECT * FROM RDL_tbl_UserManagement_UserInfo_' + @table_prefix_name +
' WHERE partnerID = ' + CAST(@partnerID AS VARCHAR) +
' AND userID = ' + CAST(@adminUserID AS VARCHAR) +
' AND addressType= ''MZ'' ORDER BY company'
END
ELSE
BEGIN
SET @sql = 'SELECT * FROM RDL_tbl_UserManagement_UserInfo_' + @table_prefix_name +
' WHERE partnerID = ' + CAST(@partnerID AS VARCHAR) +
' AND userID = ' + CAST(@adminUserID AS VARCHAR) +
' AND addressType=''H'' ORDER BY company'
END
Exec (@sql)