我正在编写WPF应用程序,在某个时候,我试图通过如下过程将新行添加到数据库中:
CREATE PROCEDURE dbo.InsertStudent
@IdStudent INT,
@FirstName VARCHAR(50),
@LastName VARCHAR(50),
@Address VARCHAR(50),
@IndexNumber VARCHAR(50),
@IdStudies INT
AS
SET NOCOUNT ON
INSERT INTO [dbo].[apbd.Student]
([IdStudent]
,[FirstName]
,[LastName]
,[Address]
,[IndexNumber]
,[IdStudies])
VALUES
(@IdStudent
,@FirstName
,@LastName
,@Address
,@IndexNumber
,@IdStudies)
但是每当我要使用它时,都会出现错误:
SQL71502:过程:[dbo]。[InsertStudent]对对象[dbo]。[apbd.Student]有未解决的引用。
我一直在寻找解决方案,但是我发现只是通过右键单击“引用”等来添加对数据库的引用,但是我的解决方案资源管理器中没有此选项。
也许我在错误的位置寻找它,但是右键单击后我唯一的选择就是这样:
关于在数据库中创建表的代码:
CREATE SCHEMA apbd;
GO
-- tables
-- Table: Student
CREATE TABLE apbd.Student (
IdStudent int NOT NULL IDENTITY,
FirstName nvarchar(100) NOT NULL,
LastName nvarchar(100) NOT NULL,
Address nvarchar(100) NOT NULL,
IndexNumber nvarchar(50) NOT NULL,
IdStudies int NOT NULL,
CONSTRAINT Student_pk PRIMARY KEY (IdStudent)
);
-- Table: Student_Subject
CREATE TABLE apbd.Student_Subject (
IdStudentSubject int NOT NULL IDENTITY,
IdStudent int NOT NULL,
IdSubject int NOT NULL,
CreatedAt datetime NOT NULL,
CONSTRAINT Student_Subject_pk PRIMARY KEY (IdStudentSubject,IdStudent,IdSubject)
);
-- Table: Studies
CREATE TABLE apbd.Studies (
IdStudies int NOT NULL IDENTITY,
Name nvarchar(100) NOT NULL,
CONSTRAINT Studies_pk PRIMARY KEY (IdStudies)
);
-- Table: Subject
CREATE TABLE apbd.Subject (
IdSubject int NOT NULL IDENTITY,
Name nvarchar(100) NOT NULL,
CONSTRAINT Subject_pk PRIMARY KEY (IdSubject)
);
-- End of file.
答案 0 :(得分:1)
我将运行以下命令来确定表的实际名称和架构:
SELECT
CAST(
MAX(
CASE
WHEN
TABLE_SCHEMA = 'apbd'
AND TABLE_NAME = 'Student'
THEN 1
ELSE 0
END
) AS bit
) [The table is apbd.Student]
,
CAST(
MAX(
CASE
WHEN
TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'apbd.Student'
THEN 1
ELSE 0
END
) AS bit
) [The table is dbo.apbd.Student]
FROM INFORMATION_SCHEMA.TABLES
我还想知道您是否可能在USE
脚本的开始处需要一个CREATE
语句-您是否在正确的数据库上创建过程?
如果表位于其他数据库上,则需要在存储过程中引用数据库,即[DatabaseName].[dbo].[apbd.Student]
。
答案 1 :(得分:0)
默认情况下,MS SQL Server数据库只有一个架构(dbo)。您可以出于安全或组织目的将架构添加到组中。
在您的情况下,已创建模式apbd,并在该模式而不是dbo模式上创建了Student。因此,要引用该表,您需要使用[apbd]。[Student]。