Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
hiện tại vị trí hoặc ID của một vị trí mới được bổ sung nếu tên vị trí không được tồn tại. Bởi vì tài sản này có thể không được thiết lập, hoặc là cố ý hoặc do lỗi, bạn phải có khả năng để cung cấp cho nó một giá trị vô giá trị, do đó, loại giá trị Guid là không phù hợp ở đây. Guid? cũng không thích hợp bởi vì nó sẽ không được công nhận trong SQL Server. Thay vào đó, bạn sử dụng lớp SqlGuid từ không gian tên. | SQL Server CLR Integration existing location or the ID of a newly added location if the location name doesn t already exist. Because this property might not get set either deliberately or because of errors you must be able to give it a null value so the Guid value type is not suitable here. Guid is also not appropriate because it won t be recognized in SQL Server. Instead you use the SqlGuid class from the System.Data.SqlTypes namespace public class Sprocs SqlProcedure public static int AddStoryLocation Guid storyId string location out SqlGuid locationId The code starts by setting the output parameter to a null value SqlGuid.Null in case of error locationId SqlGuid.Null The remaining code is placed in a try.catch structure to accommodate errors. First a context connection is created along with an associated using block try using SqlConnection conn new SqlConnection context connection true The context connection and story ID are then used to check if the specified story ID refers to an existing row in the Story table. The code attempts to obtain the name of the story as a simple test and executes the generated command using the ExecuteScalar method to retrieve the name SqlCommand getStoryCmd new SqlCommand SELECT Name fRoM Story WHERE StoryId @StoryId conn getStoryCmd.Parameters.Add new SqlParameter @StoryId SqlDbType.UniqueIdentifier .Value storyld conn.Open string storyName getStoryCmd.ExecuteScalar as string conn.Close The connection remains open only for the minimum time just while the command executes. That s common to all the code in this method and ensures that the context connection is used as efficiently as possible. If there is no story a name won t be returned. If that happens it s reported using the SqlContext.Pipe.Send method that you saw earlier in the chapter and the method terminates with the appropriate status report ReturnValue.NoStory if storyName null SqlContext.Pipe.Send No story with an ID of storyId.ToString exists. Unable to add location. .