为什么我会犯这个错误

过程需要类型为"ntext/nchar/nvarchar"的参数"@statement".

当我试着用sp_executesql的时候?

推荐答案

听起来像是在用VARCHAR语句调用sp_executesql,而它需要是NVARCHAR.

e、 g.这将产生错误,因为@SQL需要是NVARCHAR

DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL

所以:

DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL

Sql相关问答推荐

如何将多个 Select 查询从一个表中组合出来

帮助修复查询以识别SQL DW中数据中的递归关系

数据库索引:如何使用名称和类别对项目进行最佳索引?

将主表与历史表连接以获取主表的当前汇率以及历史表中的上一个和最后一个汇率

如何在postgres函数中插入后返回布尔值?

如果多行科目有一行在指定的日期范围内,如何 Select 该科目在该日期之前的所有行?

嵌套Json对象的SQL UPDATE WHERE

在VB.NET中如何在MS Access数据库中创建SQL项目历史库存卡

不存在记录的国外关键点

获取上个月和上一年的值

清理 XML 数据

PostgreSQL-用第一个非空填充以前的值

正则表达式忽略特定数据部分的分隔符

为重复的项目编号显示正在处理

检索具有相同位置的最小和最大store 数量

HIVE SQL where 子句未按预期工作

如何将 CONCATENATED 值与临时表中的值匹配

如果 SQL 中不存在数据,如何根据某个 ID 为所有日期添加前一行

如何在 Oracle 中获取此变量的值?

如何使用子查询锁定此查询中的选定行?