• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > sp_executesql 使用复杂的Unicode 表达式错误的解决方法

sp_executesql 使用复杂的Unicode 表达式错误的解决方法

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了sp_executesql等相关知识,希望本文的分享对您有所帮助

sp_executesql 使用复杂的Unicode 表达式错误的解决方法,需要的朋友可以参考下

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '+'.

当你尝试执行下面这段代码时,会得到如上这个错误提示。
代码如下:
DECLARE @MyName NVARCHAR(100)
DECLARE @FieldName SYSNAME = N'Name'
EXECUTE sp_executesql N'SELECT TOP 1 @OutputName = ['+ @FieldName +'] FROM [dbo].[Member]',
N'@OutputName NVARCHAR(100) OUTPUT',
@MyName OUTPUT;
SELECT @MyName


问题出于不允许使用更复杂的 Unicode 表达式(例如使用 + 运算符连接两个字符串)。可以参考:
[ @statement = ] statement
包含 Transact-SQL 语句或的 Unicode 字符串。statement 必须是 Unicode 常量或 Unicode 变量。不允许使用更复杂的 Unicode 表达式(例如使用 + 运算符连接两个字符串)。不允许使用字符常量。如果指定了 Unicode 常量,则必须使用 N 作为前缀。例如,Unicode 常量 N'sp_who' 是有效的,但是字符常量 'sp_who' 则无效。字符串的大小仅受可用数据库服务器内存限制。在 64 位服务器中,字符串大小限制为 2 GB,即 nvarchar(max) 的最大大小。

解决问题,可以宣告一个变量如下代码DECLARE @sql NVARCHAR(MAX),把带动态的数据名,表名或是字段的SQL语句赋值于这个变量, 然后用这个变量传入sp_executesql中。
代码如下:
DECLARE @MyName NVARCHAR(100)
DECLARE @FieldName SYSNAME = N'Name'
DECLARE @sql NVARCHAR(MAX) = N'SELECT TOP 1 @OutputName = ['+ @FieldName +'] FROM [dbo].[Member]'
EXECUTE sp_executesql @sql,
N'@OutputName NVARCHAR(100) OUTPUT',
@MyName OUTPUT;
SELECT @MyName


变通一下,问题轻而易举解决。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-12-05删除MySQL数据库提示操作无法完成
  • 2018-12-05mysql数据库备份的几种方法
  • 2018-12-05mysql求2个或以上字段为NULL值的实例分享
  • 2017-09-29mysql-connector-odbc-5.1.13-win32.msi安装成功后,ODBC数据源管理器无法显示该MySql驱动的问题
  • 2018-12-05优化SQL查询:如何写出高性能SQL语句
  • 2018-12-05mysql进阶(二十四)防御SQL注入的方法总结
  • 2018-12-05MySQL BETWEEN 用法
  • 2018-12-05MySQL优化—运算符具体详解(图)
  • 2017-05-11mysql 数据类型TIMESTAMP
  • 2018-12-05MyISAM和InnoDB区别

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Mysql5.5 InnoDB存储引擎配置和优化
    • 8 个不得不说的 MySQL 陷阱
    • mysql免安装版配置步骤详解分享
    • SQLServer 2005 自动备份数据库的方法分享(附图解教程)
    • linux服务器清空MySQL的history历史记录 删除mysql操作记录
    • SQL Server 2005安装实例环境图解第1/2页
    • MySQL服务器默认安装之后调节性能的方法
    • NoSQL数据库是否会像承诺的那样走下去?
    • 清除SQLServer日志的两种方法
    • mssql存储过程表名和字段名为变量的实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有