SQL存储过程中如何建立不同名的table?(50分)

R

riota

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在存储过程中(如下)建立不同名(自己定义)的table,
第4行语法错误: CREATE TABLE @LOGNAME,请教如何修改

CREATE PROC CREATELOG
AS
DECLARE @LOGNAME CHAR(9)
CREATE TABLE @LOGNAME
(记录号 INT IDENTITY NOT NULL PRIMARY KEY,
使用者姓名 CHAR(8) NOT NULL)
GO
 
用动态SQL
Exec('create table '+@tbname+'...')
 
存储过程中的变量不能作表名!(没招的,很多人试过)
SQL语用中也一样!(只能写好一个完整的SQL,然后再把它当参数传到存储过程中)
 
我想用存储过程.不用动态SQL
 
CREATE TABLE #LOGNAME(记录号 INT IDENTITY NOT NULL PRIMARY KEY,使用者姓名 CHAR(8) NOT NULL)
 
就是在存储过程里用动态SQL
 
to kaoble,
CREATE TABLE #LOGNAME
可以赋值吗?
 
这是 SQL 2000 帮助中的话,注意有个‘默认情况下’,这就是说特殊情况下是可以的,这
个特殊情况是怎样呢?

@parameter

过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。用户必须在执行过
程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2.100
个参数。

使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程
的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。默认情况下,参数只能代
替常量,而不能用于代替表名、列名或其它数据库对象的名称。有关更多信息,请参见
EXECUTE。
 
存储过程中最好不要创建永久表,创建临时表还是挺方便的,不过用户并发操作太多时也会有问题
.创建临时表:
Create table #TmptableName
{
...
}
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
521
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部