数据库表名作为参数传递给存储过程的方法
通常的存储过程虽然也可以带参数,但是如果你的存储过程的参数是表名、字段名、数据库名之类的时候,通常的方法就行不通了!
下面是用表名做参数的存储过程创建:
1
2
3
4
5
6
7
|
CREATE
PROCEDURE
SpecialInsertProcedure
@TableName
varchar
(50),
@userId
varchar
(10),
@pwd
varchar
(10),
@userRole
int
AS
exec
(
'insert into '
+@TableName +
'(userId,pwd,userRole) values ('
''
+@userId+
''
','
''
+@pwd+
''
','
+@userRole+
')'
)
|
1
|
其中的TableName是表名,userId,pwd,userRole是表中的字段。对应的@TableName是传递到存储过程的表名变量,
|
1
|
@userId,@pwd,@userRole是需要插入表中的数据;
|
1
|
需要注意的是单引号的使用方法,这里用两个<SPAN style=
"TEXT-DECORATION: underline"
>
''
</SPAN>代替字符串里面的一个 <SPAN style=
"TEXT-DECORATION: underline"
>
' </SPAN> 其实就是有一个<SPAN style="TEXT-DECORATION: underline"> '
</SPAN> 当作了专业字符。
|
1
|
对应的该存储过程的执行为:
|
1
|
exec
SpecialInsertProcedure UserInfo,sss,sss,1
|