sql – nvarchar不是一个公认的游标选项

前端之家收集整理的这篇文章主要介绍了sql – nvarchar不是一个公认的游标选项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在运行一些从临时表中获取信息的sql,并将其放入永久表中.我从3年前的一步一步的指导中得到它,写的人已经很久了.
它声明在这里使用这个sql.
declare @Password nvarchar(100); 
set @Password ='rewards';
if not exists(select 1 from sys.openkeys where key_name = 'Sym_UserPassData' 
and database_name = db_name())  OPEN SYMMETRIC KEY Sym_UserPassData DECRYPTION BY
CERTIFICATE UserPassTables with password='asbpass71509new';
INSERT INTO [User] (Username,[Password],AllowChange,ForceChange,FullName,SalesRep,OpenLink,UserProfileID,LastUpdatedBy,UserEmail) 
(SELECT Username,EncryptByKey(Key_GUID('Sym_UserPassData'),@Password),[OpenLink ],LastUpdateBy,UserEmail FROM TempUsers)

之后,它说下面

如果密码对于每一行都是唯一的,请采用set @Password =’Password’;关闭并用[密码]替换@Password.

所以起初我只是改了第二行,所以说

declare @Password nvarchar(100);
set [Password]
...

但是这给我一个密码列错误,所以我改为:

declare [Password] nvarchar(100); 
set [Password]
if not exists(select 1 from sys.openkeys where key_name = 'Sym_UserPassData' 
and database_name = db_name())  OPEN SYMMETRIC KEY Sym_UserPassData DECRYPTION BY
CERTIFICATE UserPassTables with password='asbpass71509new';
INSERT INTO [User] (Username,[Password]),UserEmail FROM TempUsers)

那是什么给了我错误

nvarchar is not a recognized cursor option

有人知道我失踪了吗?如果我可以提供任何其他信息,我会尽力做到这一点.

谢谢任何能够帮忙的人.

解决方法

你必须在名字之前用@符号声明变量.所以这是正确的:
declare @Password nvarchar(100); 
set @Password ='rewards';

这是不正确的:

declare [Password] nvarchar(100); 
set [Password] ='rewards';

我认为问题是你的变量声明.参见这篇文章http://www.databasejournal.com/features/mssql/article.php/3087431/T-SQL-Programming-Part-1—Defining-Variables-and-IFELSE-logic.htm

猜你在找的MsSQL相关文章