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

declare   @Sql Nvarchar(4000)
   SET @Sql = ‘ select * from a_table ‘
要么这样,

要不然在执行存储过程变量前加N‘‘

ALTER PROCEDURE [dbo].[proc]
as
BEGIN
--这里,varchar要改为nvarchar(4000)
declare   @Sql nvarchar(4000)
SET @Sql = N‘ select * from a_table ‘

    -- Insert statements for procedure here
exec    sp_executesql @Sql
select @Sql as ‘@Sql‘
END
-

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

时间: 2024-11-07 20:05:57

过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'的相关文章

消息 xxx,级别 16,状态 x,过程 sp_executesql,第 x 行 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。

消息 xxx,级别 16,状态 x,过程 sp_executesql,第 x 行 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'. 原来的语句: declare @createtablestr varchar(2000) set @createtablestr=' CREATE TABLE... 修改为 declare @createtablestr Nvarchar(2000) set @createtablestr=' CREATE TABLE

[Android Pro] sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别

reference : http://blog.csdn.net/xingfeng0501/article/details/7817121 1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充. 2.VARCHAR.存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合

sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别

1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充. 2.VARCHAR.存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的.VARCHAR类型的实际长度是它的值的实际长度+1.为什么“+1”呢?这一个字节用于保存实际使用了多大的长度.从空间上考虑,用varc

【转载】 sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别

原文地址:http://blog.csdn.net/xingfeng0501/article/details/7817121 1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充. 2.VARCHAR.存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的.VARC

sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别(转)

sqlite数据库存储table1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充.2.VARCHAR.存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的.VARCHAR类型的实际长度是它的值的实际长度+1.为什么“+1”呢?这一个字节用于保存实际使用了多大的

SQL Server char,varchar,nchar,nvarchar区别

(1)       定义: char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字符,根据数据长度自动变化. nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化. nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据.n 的值必须介于 1  与  4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字

MSSql中ntext与nvarchar相等比较

在MS Sql数据库中,如果table中的某column数据类型设计为ntext或者text,做查询匹配时,用=操作会引起: The data types ntext and varchar are incompatible in the equal to operator. 因为 用‘’引起来的字符串默认的数据类型为nvarchar,ntext类型的数据与nvarcahr类型数据不能直接做比较. 比如,如下一个查询: select * from myTable where myColumnOn

多态 这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

多态 类具有继承关系,并且子类类型可以向上转型看做父类类型,如果我们从 Person 派生出 Student和Teacher ,并都写了一个 whoAmI() 方法: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def whoAmI(self): return 'I am a Person, my name is %s' % self.name clas

为过程或函数sp_Adduser指定了过多的参数

前些天写用户注册模块,用存储过程添加用户,一开始就报“为过程或函数sp_Adduser指定了过多的参数”.仔细检查数据层的用户添加函数,结果在为存储过程添加sqlparameter参数的时候,数组给写错位了(参数太多).改正后,编译执行,结果还是报“为过程或函数sp_Adduser指定了过多的参数”.自己把存储过程程序对照了好几遍,没问题.到网上搜索,原来在执行存储过程的时候,如果以sp开头,用户创建的存储过程,总会先检查master数据库(即使该存储过程已用数据库名称限定).   如果用户创建