上代码
IF OBJECT_ID('[A]') IS NOT NULL DROP TABLE [A]
CREATE TABLE [A](aid INT,aname VARCHAR(1))
INSERT [A] SELECT 1,'A' UNION SELECT 2,'B' UNION SELECT 3,'C'
GO
CREATE PROCEDURE proc_A_test
@param VARCHAR(20)
AS
SELECT * FROM [A] WHERE @PARAM = 'B'exec proc_A_test 'aname ' --注意,这个aname是上面表的字段
我想问2个问题1.可不可以把存储过程的参数作为执行SQL语句的字段参数2.为什么这个存储过程执行了多次
IF OBJECT_ID('[A]') IS NOT NULL DROP TABLE [A]
CREATE TABLE [A](aid INT,aname VARCHAR(1))
INSERT [A] SELECT 1,'A' UNION SELECT 2,'B' UNION SELECT 3,'C'
GO
CREATE PROCEDURE proc_A_test
@param VARCHAR(20)
AS
SELECT * FROM [A] WHERE @PARAM = 'B'exec proc_A_test 'aname ' --注意,这个aname是上面表的字段
我想问2个问题1.可不可以把存储过程的参数作为执行SQL语句的字段参数2.为什么这个存储过程执行了多次
exec('SELECT * FROM [A] WHERE ' + @PARAM + '= ''B''')
@param VARCHAR(20)
AS
SELECT * FROM [A] WHERE aname =@PARAM
CREATE TABLE [A](aid INT,aname VARCHAR(1))
INSERT [A] SELECT 1,'A' UNION SELECT 2,'B' UNION SELECT 3,'C'
GO
CREATE PROCEDURE proc_A_test
@param VARCHAR(20)
AS
exec('SELECT * FROM [A] WHERE '+@PARAM+' = ''B''')
CREATE TABLE [A](aid INT,aname VARCHAR(1))
INSERT [A] SELECT 1,'A' UNION SELECT 2,'B' UNION SELECT 3,'C'
GO
CREATE PROCEDURE proc_A_test
@param VARCHAR(20)
AS
exec('SELECT * FROM [A] WHERE ' + @PARAM + '= ''B''')
go --注意 加了go 要不你的 exec proc_A_test 'aname '是存储过程的一部分 就是自己调用了自己
exec proc_A_test 'aname ' --注意,这个aname是上面表的字段
@param VARCHAR(20)
AS
EXEC('SELECT * FROM [A] WHERE '+@PARAM+' = 'B')
用动态