CREATE PROCEDURE [EditImage] ( @ObjectName CHAR(50), @ImageID int, @Title CHAR(50) ) AS Begin DECLARE @sqlcommand NVARCHAR(255) SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='+@Title+' where id='+Cast(@ImageID As Varchar) --轉換下 類型 EXEC(@sqlcommand) End GO
CREATE PROCEDURE [EditImage] ( @ObjectName CHAR(50), @ImageID int, @Title CHAR(50) ) AS DECLARE @sqlcommand NVARCHAR(255) SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='+@Title+' where id='+rtrim(@ImageID) --转换为字符串再连接 EXEC(@sqlcommand) GO--貌似传参数位置错误 EditImage 'prz3_body',3,'Goog'
再修改下CREATE PROCEDURE [EditImage] ( @ObjectName Varchar(50), --最好改為Varchar,Char會自動在字符串後面補充空格 @ImageID int, @Title Varchar(50) ) AS Begin DECLARE @sqlcommand NVARCHAR(255) SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='+@Title+' where id='+Cast(@ImageID As Varchar) --轉換下 類型 EXEC(@sqlcommand) End GO
存储过程第2个参数是int型的,你传值的时候第2个值是字符型的,当然报错了
re:gahade 列名 'Goog' 无效。
暈了,忘了處理字符串了。CREATE PROCEDURE [EditImage] ( @ObjectName Varchar(50), --最好改為Varchar,Char會自動在字符串後面補充空格 @ImageID int, @Title Varchar(50) ) AS Begin DECLARE @sqlcommand NVARCHAR(255) SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='''+@Title+''' where id='+Cast(@ImageID As Varchar) --轉換下 類型 EXEC(@sqlcommand) End GO
这样改CREATE PROCEDURE [EditImage] ( @ObjectName CHAR(50), @ImageID int, @Title CHAR(50) ) AS DECLARE @sqlcommand NVARCHAR(255) SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='''+@Title+''' where id='+rtrim(@ImageID) --转换为字符串再连接 EXEC(@sqlcommand) GO--貌似传参数位置错误 EditImage 'prz3_body',3,'Goog'
非常感谢大家的帮助,原本我以为在csdn上可以解决不了后面就顺便在microsoft partner newsgroup上问了,谢谢大家!~.thank so much!kaixin110 是一位Web工程师。他原来是在郑州一家软件公司做WebGIS(JSP+Servlet+Tomcat),对WebGIS的原理有一定研究,在狂热地编写代码之余,他喜欢打篮球并体验软件带给我们的惊喜 。目前在中国深圳一公司做Web开发(ASP.NET),如果您希望就本文与 kaixin110联系,则可以通过 [email protected]与他联系。
gahade(与君共勉) , CHAR最好改為varchar。
他是向name字段赋值,应该没关系吧. 看楼主需要,也可以用rtrim(@Title)
這裡是沒關係,不過這裡最好盡量避免使用char類型。
CREATE PROCEDURE [EditImage] ( @ObjectName CHAR(50), @ImageID int, @Title CHAR(50) ) AS DECLARE @sqlcommand NVARCHAR(255) SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='''+Rtrim(@Title)+''' where id='+Cast(@ImageID As Varchar) print @sqlcommand EXEC(@sqlcommand) GO Update prz3_body SET name='Goog' where id=3(1 row(s) affected)
(
@ObjectName CHAR(50),
@ImageID int,
@Title CHAR(50)
)
AS
Begin
DECLARE @sqlcommand NVARCHAR(255)
SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='+@Title+' where id='+Cast(@ImageID As Varchar) --轉換下 類型
EXEC(@sqlcommand)
End
GO
(
@ObjectName CHAR(50),
@ImageID int,
@Title CHAR(50)
)
AS
DECLARE @sqlcommand NVARCHAR(255)
SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='+@Title+' where id='+rtrim(@ImageID) --转换为字符串再连接
EXEC(@sqlcommand)
GO--貌似传参数位置错误
EditImage 'prz3_body',3,'Goog'
(
@ObjectName Varchar(50), --最好改為Varchar,Char會自動在字符串後面補充空格
@ImageID int,
@Title Varchar(50)
)
AS
Begin
DECLARE @sqlcommand NVARCHAR(255)
SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='+@Title+' where id='+Cast(@ImageID As Varchar) --轉換下 類型
EXEC(@sqlcommand)
End
GO
列名 'Goog' 无效。
(
@ObjectName Varchar(50), --最好改為Varchar,Char會自動在字符串後面補充空格
@ImageID int,
@Title Varchar(50)
)
AS
Begin
DECLARE @sqlcommand NVARCHAR(255)
SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='''+@Title+''' where id='+Cast(@ImageID As Varchar) --轉換下 類型
EXEC(@sqlcommand)
End
GO
(
@ObjectName CHAR(50),
@ImageID int,
@Title CHAR(50)
)
AS
DECLARE @sqlcommand NVARCHAR(255)
SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='''+@Title+''' where id='+rtrim(@ImageID) --转换为字符串再连接
EXEC(@sqlcommand)
GO--貌似传参数位置错误
EditImage 'prz3_body',3,'Goog'
看楼主需要,也可以用rtrim(@Title)
(
@ObjectName CHAR(50),
@ImageID int,
@Title CHAR(50)
)
AS
DECLARE @sqlcommand NVARCHAR(255)
SELECT @sqlcommand='Update '+RTRIM(@ObjectName) +' SET name='''+Rtrim(@Title)+''' where id='+Cast(@ImageID As Varchar)
print @sqlcommand
EXEC(@sqlcommand)
GO
Update prz3_body SET name='Goog' where id=3(1 row(s) affected)