带表名参数存储过程,添加记录失败,急!

gongshf 2005-09-12 11:40:38
CREATE PROCEDURE u_PhotoAdd
@tablename varchar(20),
@intro varchar(200),
@availability int
AS
declare @strSQL nvarchar(1000)

set @strSQl='insert into '+@tablename+' (intro,availability)values( '+@intro+','+@availability+' )'

EXEC(@strSQL)
GO



语法检查通过,但程序调用插入数据失败!输入参数没问题。
...全文
127 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongshf 2005-09-13
  • 打赏
  • 举报
回复
up
gongshf 2005-09-12
  • 打赏
  • 举报
回复
请高手给个注解,让我错的明明白白。
拜托
vivianfdlpw 2005-09-12
  • 打赏
  • 举报
回复
CREATE PROCEDURE u_PhotoAdd
@tablename varchar(20),
@intro varchar(200),
@availability int
AS
declare @strSQL nvarchar(1000)

set @strSQl=N'insert into '+@tablename+' (intro,availability)values(@intro,@availability)'

exec sp_executesql @strSQL
,N'@@intro varchar(200),@availability int'
,@intro,@availability
GO
子陌红尘 2005-09-12
  • 打赏
  • 举报
回复
CREATE PROCEDURE u_PhotoAdd
@tablename varchar(20),
@intro varchar(200),
@availability int
AS
declare @strSQL nvarchar(1000)

set @strSQl='insert into '+@tablename+' (intro,availability)values( '''+@intro+''','+cast(@availability as varchar(20)+' )'

EXEC(@strSQL)
GO
gongshf 2005-09-12
  • 打赏
  • 举报
回复
两个方法都可以,不过 libin_ftsafe(子陌红尘)  的方法有点小问题,对一些特殊字符如单引号会出错,其实添加记录我用存储过程,其中一个主要目的也是为防止操作人员的恶意输入。

vivianfdlpw() 的方法不错,不过

,N'@@intro varchar(200),@availability int'

这一句中的 @@intro 是否应该是 @intro 呢?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧