
sql server 中EXEC的用法
createprocedurefirst_test_sp(@filter_namenvarchar(1000))asdeclare@tempnvarchar(30)exe...
create procedure first_test_sp(@filter_name nvarchar(1000))
as
declare @temp nvarchar(30)
exec ('select @temp=left_code from item_code where '+ @filter_name)
print @temp
go
当我调用该过程时,报出‘@temp’必须定义的错误!!!
请高手指教 展开
as
declare @temp nvarchar(30)
exec ('select @temp=left_code from item_code where '+ @filter_name)
print @temp
go
当我调用该过程时,报出‘@temp’必须定义的错误!!!
请高手指教 展开
5个回答
展开全部
exec函数族的作用为根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。
exec函数族的函数执行成功后不会返回,因为调用进程的实体,包括代码段,数据段和堆栈等都已经被新的内容取代,只留下进程ID等一些表面上的信息仍保持原样,看上去还是旧的躯壳,却已经注入了新的灵魂。只有调用失败了,它们才会返回一个-1,从原程序的调用点接着往下执行。
扩展资料
使用exec函数族主要有两种情况:
1、当进程认为自己不能再为系统和用户做出任何贡献时,就可以调用exec函数族中的任意一个函数让自己重生。
2、如果一个进程想执行另一个程序,那么它就可以调用fork函数新建一个进程,然后调用exec函数族中的任意一个函数,这样看起来就像通过执行应用程序而产生了一个新进程(这种情况非常普遍)。
参考资料来源:百度百科-exec函数族
参考资料来源:百度百科-exec...
展开全部
字段名和表名在EXEC里面必须是确定的
你可以换一种形式比如:
select @temp=left_code from item_code where filter_name=@filter_name
你可以换一种形式比如:
select @temp=left_code from item_code where filter_name=@filter_name
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
EXEC 好像是 EXECUTE 的简写。
可以用来执行一个存储过程。
1> CREATE PROCEDURE HelloWorld AS
2> DECLARE
3> @testvalue1 AS VARCHAR(20),
4> @testvalue2 AS VARCHAR(20);
5> BEGIN
6> PRINT 'Hello World';
7> SET @testvalue1 = 'First Test !';
8> SELECT @testvalue2 = 'Second Test !';
9> PRINT( @testvalue1 + @testvalue2);
10> END;
11> go
1> exec HelloWorld
2> go
Hello World
First Test !Second Test !
1> execute HelloWorld
2> go
Hello World
First Test !Second Test !
可以用来执行一个存储过程。
1> CREATE PROCEDURE HelloWorld AS
2> DECLARE
3> @testvalue1 AS VARCHAR(20),
4> @testvalue2 AS VARCHAR(20);
5> BEGIN
6> PRINT 'Hello World';
7> SET @testvalue1 = 'First Test !';
8> SELECT @testvalue2 = 'Second Test !';
9> PRINT( @testvalue1 + @testvalue2);
10> END;
11> go
1> exec HelloWorld
2> go
Hello World
First Test !Second Test !
1> execute HelloWorld
2> go
Hello World
First Test !Second Test !
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在某些情况下,作用是一样的,如:
USE DB;
GO
--Create The Table. We'll pull info from here for our dynamic SQL
CREATE TABLE DynamicSQLExample (
TableID int IDENTITY NOT NULL CONSTRAINT PKDynamicSQLExample PRIMARY KEY,
SchemaName varchar(128) NOT NULL,
TableName varchar(128) NOT NULL
);
GO
/* Populate the table. In this case, We're grabbing every user ** table object in this database */
INSERT INTO DynamicSQLExample
SELECT s.name AS SchemaName, t.name AS TableName
FROM sys.schemas s JOIN sys.tables t
ON s.schema_id = t.schema_id;
GO
DECLARE @SchemaName varchar(128)
DECLARE @TableName varchar(128)
-- Now, grab the table name that goes with our ID
SELECT @SchemaName = SchemaName, @TableName = TableName
FROM DynamicSQLExample
WHERE TableID = 3
-- Finally, pass that value into the EXEC statement
EXEC ('SELECT * FROM ' + @SchemaName + '.' + @TableName)
USE DB;
GO
--Create The Table. We'll pull info from here for our dynamic SQL
CREATE TABLE DynamicSQLExample (
TableID int IDENTITY NOT NULL CONSTRAINT PKDynamicSQLExample PRIMARY KEY,
SchemaName varchar(128) NOT NULL,
TableName varchar(128) NOT NULL
);
GO
/* Populate the table. In this case, We're grabbing every user ** table object in this database */
INSERT INTO DynamicSQLExample
SELECT s.name AS SchemaName, t.name AS TableName
FROM sys.schemas s JOIN sys.tables t
ON s.schema_id = t.schema_id;
GO
DECLARE @SchemaName varchar(128)
DECLARE @TableName varchar(128)
-- Now, grab the table name that goes with our ID
SELECT @SchemaName = SchemaName, @TableName = TableName
FROM DynamicSQLExample
WHERE TableID = 3
-- Finally, pass that value into the EXEC statement
EXEC ('SELECT * FROM ' + @SchemaName + '.' + @TableName)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create procedure first_test_sp(@filter_name nvarchar(1000))
as
exec ('declare @temp nvarchar(30) select @temp=left_code from item_code where '+ @filter_name)
print @temp
go
--这样试试!
as
exec ('declare @temp nvarchar(30) select @temp=left_code from item_code where '+ @filter_name)
print @temp
go
--这样试试!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询