【发布时间】:2022-08-23 04:35:31
【问题描述】:
我正在尝试使用 SQL Server 过程创建两个具有不同名称的表,具体取决于变量是 (1) 还是否 (0)。我所看到的一切都是指临时表。我想将表永久存储在数据库中。
CREATE PROCEDURE DUALTYPE
@TableName nvarchar(18), @YesNo int
AS
BEGIN
SELECT *
INTO dbo.[@TableName]
FROM
(SELECT * FROM mytable
WHERE dual = @YesNo) dualtab
END
EXEC DUALTYPE @TableName = \'dualtable\' @YesNo = 0
该过程执行,但它认为我的表名是@TableName。我如何告诉它使用 \'dualtable\' 代替?
-
根据变量是 (1) 还是否 (0) 创建两个具有不同名称的表- 您似乎根本没有这样做,您正在尝试显式传递表名并使用
@YesNo过滤正在填充的行。 -
您至少需要一个 CREATE TABLE 语句。你确定这是你想做的吗?比如你想解决什么问题?这个要求听起来有点可疑。
-
好的。我正在使用 Microsoft SQL;我认为 CREATE TABLE 仅适用于 Oracle。
-
您不能将参数用作对象名称。如果要传递对象名称,则必须将 sql 语句构造为要使用
EXECUTE sp_executesql执行的字符串 -
我以为 CREATE TABLE 只适用于 Oracle你是怎么得出这个结论的?
create table是几乎每个 DBMS 都使用的 ISO SQL - 也许 Oracle 参考是双重的也起源于
标签: sql-server stored-procedures