CREATE PROCEDURE [dbo].[sp_getAppByLgName]
@loginName VARCHAR(32)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UserAppId NVARCHAR(256)
DECLARE @getAppSql NVARCHAR(4000)
SET @UserAppId = (SELECT UserAppId FROM tb_AppManager tam WHERE LOWER(tam .UserAccount) = LOWER(@loginName)) ---这里得到的值是com.mobile.iphone.xplatform#com.mobile.ipad.xplatform IF @UserAppId <> ''
BEGIN
SELECT @getAppSql =
'SELECT Name = tai.AppName_CN FROM tbAppInfo tai(NOLOCK) WHERE
charindex(tai.AppId,'+@UserAppId +')>0'
EXEC sys.sp_executesql @getAppSql
END
END如上,执行该存储过程,输入用户名后提示无法绑定由多个部分组成的标识符 "com.mobile.iphone.xplatform#com.mobile.ipad.xplatform"。,但是我把charindex(tai.AppId,'+@UserAppId +')>0中的@UserAppId换为"com.mobile.iphone.xplatform#com.mobile.ipad.xplatform就可以执行, 请问各位大侠,这是怎么回事啊,多谢了SQL存储select存储过程SQLSERVER
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UserAppId NVARCHAR(256)
DECLARE @getAppSql NVARCHAR(4000)
SET @UserAppId = ( SELECT UserAppId
FROM tb_AppManager tam
WHERE LOWER(tam.UserAccount) = LOWER(@loginName)
) ---这里得到的值是com.mobile.iphone.xplatform#com.mobile.ipad.xplatform IF @UserAppId <> ''
BEGIN
SELECT @getAppSql = 'SELECT Name = tai.AppName_CN FROM tbAppInfo tai(NOLOCK) WHERE
charindex(tai.AppId,''' + @UserAppId + ''')>0'
PRINT @getAppSql --你把@getAppSql print出来看看就知道了:CHARINDEX中的字符串两边需要加单引号'',看一下下面打印的结果
EXEC sys.sp_executesql @getAppSql
END
END/*
SELECT Name = tai.AppName_CN FROM tbAppInfo tai(NOLOCK) WHERE
charindex(tai.AppId,'com.mobile.iphone.xplatform#com.mobile.ipad.xplatform')>0
*/
(@loginName VARCHAR(32))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UserAppId NVARCHAR(256)
DECLARE @getAppSql NVARCHAR(4000)
SET @UserAppId = (SELECT UserAppId FROM tb_AppManager tam WHERE LOWER(tam .UserAccount) = LOWER(@loginName))
IF @UserAppId <> ''
BEGIN
SELECT @getAppSql =
'SELECT Name = tai.AppName_CN FROM tbAppInfo tai(NOLOCK) WHERE
charindex(tai.AppId,'''+@UserAppId +''')>0'
EXEC sys.sp_executesql @getAppSql
END
END